做了好几道这类题了,dijkstra单源最短路径一气呵成
- #include
- #include
- #include
- #define MAXN 510
- using namespace std;
-
- int road[MAXN][MAXN];
- int cost[MAXN][MAXN];
- int vis[MAXN],roadMin[MAXN],costMin[MAXN];
- vector<int> pre[MAXN];
- const int inf=8989898;
- int main(){
- int n,m,s,d;//编号0到n-1
- cin>>n>>m>>s>>d;
- //初始化
- for(int i=0;i
- for(int j=0;j
- if(i!=j){
- road[i][j]=inf;cost[i][j]=inf;
- }
- roadMin[i]=costMin[i]=inf;
- }
- }
- for(int i=0;i
- int a,b,len,c;
- cin>>a>>b>>len>>c;
- road[a][b]=road[b][a]=len;
- cost[a][b]=cost[b][a]=c;
- }
- //计算
- roadMin[s]=0,costMin[s]=0;
- for(int i=0;i
- int u=-1,temp=inf;
- for(int j=0;j
- if(roadMin[j]
- u=j;
- temp=roadMin[j];
- }
- }
- if(u==-1)break;
- vis[u]=1;
- //更新
- for(int v=0;v
- if(!vis[v]&&roadMin[u]+road[u][v]
- roadMin[v]=roadMin[u]+road[u][v];
- pre[v].clear();pre[v].push_back(u);
- costMin[v]=costMin[u]+cost[u][v];
- }
- else if(!vis[v]&&roadMin[u]+road[u][v]==roadMin[v]){
- if(costMin[u]+cost[u][v]
- pre[v].clear();pre[v].push_back(u);
- costMin[v]=costMin[u]+cost[u][v];
- }
- }
- }
- }
- //输出答案
- int t=d;
- vector<int>ans;
- ans.push_back(d);
- while(s!=d){
- d=pre[d][0];
- ans.push_back(d);
- }
- for(int i=ans.size()-1;i>=0;i--)cout<
" "; - cout<
" "< - return 0;
- }
-
相关阅读:
LeetCode八月每日一题题解(个人记录打卡)
react-antD 下拉框组件使用出现的问题(antd版本问题)-menus
8天长假快来了,Python分析【去哪儿旅游攻略】数据,制作可视化图表
虚拟机ubantu系统突然重启失去网络
Python和Pycharm安装教程
【Axure教程】能增删改数据的动态饼图
关于线段树基础
算法题中常用的工具类的方法(Java)
设计模式 - 适配器模式
opencv c++ 霍夫圆检测
-
原文地址:https://blog.csdn.net/weixin_52030057/article/details/132919863
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU