https://pintia.cn/problem-sets/994805342720868352/problems/994805464397627392
先跑一下Dijkstra()
然后再dfs()一下求最短路下的最小花费即可,记得保存路径。

#include<bits/stdc++.h>
using namespace std;
const int N=1e2*5+10;
const int inf=0x3f3f3f3f;
int dist[N],g[N][N],price[N][N],n,m,s,d;
int st[N],ans=inf;
vector<int>paths,temp;
void Dijkstra()
{memset(dist,0x3f,sizeof dist);dist[s]=0;for(int i=0;i<n;i++){int t=-1;for(int j=0;j<n;j++) if(!st[j]&&(t==-1 || dist[j]<dist[t])) t=j;st[t]=1;for(int j=0;j<n;j++) dist[j]=min(dist[j],dist[t]+g[t][j]);}
}
void dfs(int u,int father,int sum)
{if(u==d){if(sum<ans) {ans=sum,paths=temp;paths.push_back(d);}return;}for(int i=0;i<n;i++){if(i==father) continue;//避免走回路if(dist[i]==dist[u]+g[u][i])//是最短路上的点{temp.push_back(u);dfs(i,u,sum+price[u][i]);temp.pop_back();}}
}
int main(void)
{cin>>n>>m>>s>>d;memset(g,0x3f,sizeof g);memset(price,0x3f,sizeof price);for(int i=0;i<m;i++){int a,b,c,w; cin>>a>>b>>c>>w;if(g[a][b]>c){g[a][b]=g[b][a]=c;price[a][b]=price[b][a]=w;}}Dijkstra();dfs(s,-1,0);for(int i=0;i<paths.size();i++) cout<<paths[i]<<" ";cout<<dist[d]<<" "<<ans;return 0;
}

1030 Travel Plan (30 分) 【难度: 中 / 知识点: 最短路】相关推荐

  1. PAT甲级1030 Travel Plan (30分):[C++题解]dijkstra求单源最短路、保存路径

    文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析 dijkstra模板默写过来,然后多了一个保存路径,使用数组pre[N]记录最短路上每个点的前驱,通过pre数组保存到vector中 v ...

  2. 【PAT】【spfa + dfs】1030 Travel Plan (30 分)

    题目链接:1030 Travel Plan (30 分) A traveler's map gives the distances between cities along the highways, ...

  3. 【讲解】1030 Travel Plan (30 分)【DFS】_41行代码Ac

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 A traveler's map gives the distances between cities along the hig ...

  4. 1030 Travel Plan (30 分)

    题目链接: PTA | 程序设计类实验辅助教学平台千名教师建设,万道高质量题目,百万用户拼题的程序设计实验辅助教学平台https://pintia.cn/problem-sets/9948053427 ...

  5. 1030 Travel Plan (30分)(俺是个粗人)

    就保存所有的路径,找出最短最便宜的叭 #include<iostream> #include<vector> #include<limits.h> using na ...

  6. 1030 Travel Plan(甲级)

    1030 Travel Plan (30分) A traveler's map gives the distances between cities along the highways, toget ...

  7. PAT甲级 1030 Travel Plan

    PAT甲级 1030 Travel Plan 题目链接 A traveler's map gives the distances between cities along the highways, ...

  8. 1034 Head of a Gang (30 分) 【难度: 中 / 知识点: 并查集】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805456881434624 首先不难想到的是并查集,不过这里有一个关键的 ...

  9. 1107 Social Clusters (30 分)【难度: 中 / 知识点: 并查集】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805361586847744 很不错的一个并查集的操作.你会发现我们需要处 ...

最新文章

  1. 百货中心供应链管理系统
  2. 【深度学习入门到精通系列】Python批量实现图像镜像翻转
  3. log4cplus导致主进程不能退出问题解决
  4. 无需破解,Python这个神器帮你免费获取资源,赶紧收藏!
  5. mysql 8.0.x版本压缩包安装方式
  6. JAVA中的适配器应用_Java适配器模式详解和实际应用.md
  7. python中的t操作_Python: s[i:j:k] = t 实现的是什么操作啊?
  8. 在React / React Native中使用构造函数与getInitialState有什么区别?
  9. NLP --- 隐马尔可夫HMM(概念详解、三个基本问题详解)
  10. yii2.0 读取user表新增字段问题
  11. 微信小程序实现上传图片的功能
  12. R语言非参数检验(二)
  13. 大一计算机学实验报告,大学大学计算机实验报告
  14. html英雄联盟网页,Html+Css+JQuery实现简易英雄联盟官网
  15. sort(function(a,b){return a -b})函数排序问题
  16. 企业研发人员配备比例_高新企业科技人员占比是什么要求
  17. 我爱淘冲刺阶段站立会议每天任务3
  18. 第十章《日期与时间》第6节:ZoneId、ZoneRegion和ZoneOffset
  19. pytorch geometric GraphSAGE代码样例reddit和ogbn_products_sage,为何subgraph_loader将sizes设成[-1]
  20. 自学C语言入门教程(上)

热门文章

  1. MyBatis 与 Hibernate
  2. TensorFlowIO操作(一)----线程和队列
  3. 使用tomcat时,不用给webapps文件放入文件,直接访问项目方法
  4. PHP-fpm 优化问题
  5. 阅读第13,14,15,16,17章
  6. [CareerCup][Google Interview] 找出现次数
  7. 关于STM32中CAN1_RX0_IRQn和CAN1_RX1_IRQn的使用
  8. KEIL-MDK 5 CMSIS的问题
  9. 在Fedora 14上安装Sun JDK 6 (转载)
  10. 渲染管道(3)几何阶段一“概述”