ACM 2. 旅行计划(水最短路)
2014-08-16 15:33
176 查看
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 0 0 2 10 0 4 30 0 5 100 1 2 5 2 3 50 3 5 10 4 3 20 4 5 60
【输出样例】
0: no 1: no 2: path:0 2 cost:10 3: path:0 4 3 cost:50 4: path:0 4 cost:30 5: path:0 4 3 5 cost:60
水最短路
#include <iostream> #include <cstdio> #include <cstring> using namespace std; #define INF 99999999 #define MAX_N 100 int 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; }
相关文章推荐
- ACM-最短路之中的一个个人的旅行——hdu2066
- ACM 95. [NOIP2001] Car的旅行路线(最短路)
- FZU - 2209 老S的旅行计划(最短路spfa)
- ACM-最短路之一个人的旅行——hdu2066
- ACM 入门计划
- hdu 2066 一个人的旅行(单源最短路dijkstra)and hdu 2544
- 【codevs 1041】【vijos P1119】[NOIP提高组2001] Car的旅行路线(最短路)
- hdoj 2066 一个人的旅行 【多源多汇最短路】
- ACM计划
- 【最短路】【Heap-dijkstra】hihocoder 1587 ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 J. Typist's Problem
- 【ACM训练计划】POJ题目推荐50题
- P1137 旅行计划
- ACM学习计划
- ACM学习计划(转)
- ACM学习历程——HDU5137 How Many Maos Does the Guanxi Worth(14广州10题)(单源最短路)
- acm专题---最短路
- ACM进阶计划
- NOI 冬令营 WC 2008 Trip 旅行计划 题解
- 51nod1273 旅行计划 贪心
- 【Algorithm】转一个ACM训练计划