ACM 2. 旅行计划(水最短路)
来源:互联网 发布:淘宝2017官方活动 编辑:程序博客网 时间:2024/04/30 07:55
2. 旅行计划
★☆ 输入文件:djs.in
输出文件:djs.out
简单对比时间限制:3 s 内存限制:128 MB
过暑假了,阿杜准备出行旅游,他已经查到了某些城市的两两之间的距离及可行路线(可行路线有方向),如下图所示。请你编程计算从阿杜所住城市到其它城市的最短路径以帮助阿杜制定旅行计划。
【输入格式】
输入由若干行组成,第一行有三个整数,n(1≤n≤100)、m(1≤m≤n*n)、v(1≤m≤n);城市数,m城市间道路数,v是阿杜所住城市。第2至m+1行是每条路的信息,每行三个整数,为道路的起点、终点和两城市间距离。(城市从0开始编号)
【输出格式】
n组(按城市编号由小至大),每组三行
第一行:城市编号及一个冒号
第二行:path及一个冒号,后面是最短路径节点编号序列(编号间用一个空格隔开)
第三行:cost及一个冒号,后面是一个整数,表示路径距离
如果没有通路则输出 no
【输入样例】
6 8 00 2 100 4 300 5 1001 2 52 3 503 5 104 3 204 5 60
【输出样例】
0:no1:no2:path:0 2cost:103:path:0 4 3cost:504:path:0 4cost:305:path:0 4 3 5cost:60
水最短路
#include <iostream>#include <cstdio>#include <cstring>using namespace std;#define INF 99999999#define MAX_N 100int n,m,v;int dis[MAX_N];int map[MAX_N][MAX_N];int path[MAX_N];int cost[MAX_N];bool used[MAX_N];void dijkstra(int s){fill(dis,dis+n,INF);dis[s]=0;path[s]=-1;memset(used,0,sizeof(used));while(true){int tv=-1;for(int u=0;u<n;u++) if(!used[u] && (tv==-1 || dis[tv]>dis[u])) tv=u;if(tv==-1) break;used[tv]=true;for(int u=0;u<n;u++) if(!used[u] && dis[u]>dis[tv]+map[tv][u]){path[u]=tv;dis[u]=dis[tv]+map[tv][u];}}}int fpath[MAX_N];int fcnt;void PrintPath(int p){if(p!=-1){PrintPath(path[p]);fpath[fcnt++]=p;}}int main(){freopen("djs.in","r",stdin);freopen("djs.out","w",stdout);cin>>n>>m>>v;for(int i=0;i<n;i++) for(int j=0;j<n;j++) map[i][j]=INF;for(int i=0;i<m;i++){int b,e,c;cin>>b>>e>>c;map[b][e]=c;}dijkstra(v);for(int i=0;i<n;i++){cout<<i<<":"<<endl;if(dis[i]==INF || path[i]==-1) cout<<"no"<<endl;else{cout<<"path:";fcnt=0;PrintPath(i);for(int j=0;j<fcnt-1;j++){cout<<fpath[j]<<" ";}cout<<fpath[fcnt-1]<<endl;cout<<"cost:"<<dis[i]<<endl;}}return 0;}
0 0
- ACM 2. 旅行计划(水最短路)
- ACM-最短路之一个人的旅行——hdu2066
- ACM 95. [NOIP2001] Car的旅行路线(最短路)
- 旅行(最短路)
- 最短路 一个人的旅行
- Hrbust-2122 旅行(最短路)
- ACM最短路问题
- ACM Dijkstra 最短路
- ACM-模板-最短路
- HDU ACM 2544 最短路->最短路
- 一个人的旅行(最短路)
- 【最短路】【NOIP2001】CAR的旅行路线
- HDU-2066 一个人的旅行 最短路
- hdu2066 一个人的旅行(最短路)
- 最短路(Dijstra) 一个人的旅行
- hdu 2066 一个人的旅行(最短路)
- 一个人的旅行——最短路
- 一个人的旅行(最短路_dijkstra)
- C++ primer第五版_变量和基本类型
- 深入理解计算机系统之存储器层次结构
- 【java swing 编程】文件替换小秘书(五)
- linux tmpwatch命令
- 【基础html5 基础知识点】(全)
- ACM 2. 旅行计划(水最短路)
- 【java swing 编程】文件替换小秘书(六)
- hdu1098
- 马士兵struts2视频教程第三十三集 (25到32集result的总结)
- 常用命令
- POJ 3692 Kindergarten(最大独立集)
- 工具
- 设置UIWebView为自定义UIScrollViewDelegate代理冲突问题
- 你真的有必要退出吗——再说Android程序的退出功能