1030 Travel Plan (30 分) 【难度: 中 / 知识点: 最短路】
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 分) 【难度: 中 / 知识点: 最短路】相关推荐
- PAT甲级1030 Travel Plan (30分):[C++题解]dijkstra求单源最短路、保存路径
文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析 dijkstra模板默写过来,然后多了一个保存路径,使用数组pre[N]记录最短路上每个点的前驱,通过pre数组保存到vector中 v ...
- 【PAT】【spfa + dfs】1030 Travel Plan (30 分)
题目链接:1030 Travel Plan (30 分) A traveler's map gives the distances between cities along the highways, ...
- 【讲解】1030 Travel Plan (30 分)【DFS】_41行代码Ac
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 A traveler's map gives the distances between cities along the hig ...
- 1030 Travel Plan (30 分)
题目链接: PTA | 程序设计类实验辅助教学平台千名教师建设,万道高质量题目,百万用户拼题的程序设计实验辅助教学平台https://pintia.cn/problem-sets/9948053427 ...
- 1030 Travel Plan (30分)(俺是个粗人)
就保存所有的路径,找出最短最便宜的叭 #include<iostream> #include<vector> #include<limits.h> using na ...
- 1030 Travel Plan(甲级)
1030 Travel Plan (30分) A traveler's map gives the distances between cities along the highways, toget ...
- PAT甲级 1030 Travel Plan
PAT甲级 1030 Travel Plan 题目链接 A traveler's map gives the distances between cities along the highways, ...
- 1034 Head of a Gang (30 分) 【难度: 中 / 知识点: 并查集】
https://pintia.cn/problem-sets/994805342720868352/problems/994805456881434624 首先不难想到的是并查集,不过这里有一个关键的 ...
- 1107 Social Clusters (30 分)【难度: 中 / 知识点: 并查集】
https://pintia.cn/problem-sets/994805342720868352/problems/994805361586847744 很不错的一个并查集的操作.你会发现我们需要处 ...
最新文章
- 百货中心供应链管理系统
- 【深度学习入门到精通系列】Python批量实现图像镜像翻转
- log4cplus导致主进程不能退出问题解决
- 无需破解,Python这个神器帮你免费获取资源,赶紧收藏!
- mysql 8.0.x版本压缩包安装方式
- JAVA中的适配器应用_Java适配器模式详解和实际应用.md
- python中的t操作_Python: s[i:j:k] = t 实现的是什么操作啊?
- 在React / React Native中使用构造函数与getInitialState有什么区别?
- NLP --- 隐马尔可夫HMM(概念详解、三个基本问题详解)
- yii2.0 读取user表新增字段问题
- 微信小程序实现上传图片的功能
- R语言非参数检验(二)
- 大一计算机学实验报告,大学大学计算机实验报告
- html英雄联盟网页,Html+Css+JQuery实现简易英雄联盟官网
- sort(function(a,b){return a -b})函数排序问题
- 企业研发人员配备比例_高新企业科技人员占比是什么要求
- 我爱淘冲刺阶段站立会议每天任务3
- 第十章《日期与时间》第6节:ZoneId、ZoneRegion和ZoneOffset
- pytorch geometric GraphSAGE代码样例reddit和ogbn_products_sage,为何subgraph_loader将sizes设成[-1]
- 自学C语言入门教程(上)
热门文章
- MyBatis 与 Hibernate
- TensorFlowIO操作(一)----线程和队列
- 使用tomcat时,不用给webapps文件放入文件,直接访问项目方法
- PHP-fpm 优化问题
- 阅读第13,14,15,16,17章
- [CareerCup][Google Interview] 找出现次数
- 关于STM32中CAN1_RX0_IRQn和CAN1_RX1_IRQn的使用
- KEIL-MDK 5 CMSIS的问题
- 在Fedora 14上安装Sun JDK 6 (转载)
- 渲染管道(3)几何阶段一“概述”