hdu 1385 floyd+最小字典序路径输出!!
2013-01-03 17:23
344 查看
/*
题目大意:
给你一个无向图,求任意两点的最短路。附加条件2个:
1.经过每个节点必须缴纳一点的税。
2.如果有多条最短路径,寻找字典序最小的路径。
PS:我一开始用dijstra
写了半天,WA了半天,也没搞出来个什么东东!!老是WA。。。。。。。
后来迫不得已,改成floyd了。。。。。。。。
有种吐血的冲动~~~~
*/
题目大意:
给你一个无向图,求任意两点的最短路。附加条件2个:
1.经过每个节点必须缴纳一点的税。
2.如果有多条最短路径,寻找字典序最小的路径。
PS:我一开始用dijstra
写了半天,WA了半天,也没搞出来个什么东东!!老是WA。。。。。。。
后来迫不得已,改成floyd了。。。。。。。。
有种吐血的冲动~~~~
*/
#include<cstdio> #include<cstring> #include<iostream> using namespace std; const int MAXN=1202; const int INF=99999999; int map[MAXN][MAXN],path[MAXN][MAXN],n,cost[MAXN],st,ed; void Floyd() { int i,j,k; for(k=1; k<=n; k++) for(i=1; i<=n; i++) for(j=1; j<=n; j++) { if(map[i][j]>map[i][k]+map[k][j]+cost[k]) { map[i][j]=map[i][k]+map[k][j]+cost[k]; path[i][j]=path[i][k]; } else if(map[i][j]==map[i][k]+map[k][j]+cost[k])//寻找字典序更小的路径 { if(path[i][j]>path[i][k]) { path[i][j]=path[i][k]; } } } } int main() { while(scanf("%d",&n)!=EOF&&n) { int i,j,w; for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { path[i][j]=j; scanf("%d",&map[i][j]); if(map[i][j]==-1) map[i][j]=INF; } } for(i=1; i<=n; i++) scanf("%d",&cost[i]); Floyd(); while(scanf("%d%d",&st,&ed)) { if( st==-1&&ed==-1) break; printf("From %d to %d :\n",st,ed); printf("Path: %d",st); int u=st,v=ed; while (u!=v) { printf ("-->%d", path[u][v]); u=path[u][v]; } printf("\n"); printf("Total cost : %d\n\n",map[st][ed]); } } return 0; }
相关文章推荐
- HDU 1385 Minimum Transport Cost 【最短路 + 最小字典序路径输出】
- hdu 1358 floyd+输出字典需最小最短路径
- HDU 1385 Minimum Transport Cost(Floyd+路径输出)
- HDU - 1385 Minimum Transport Cost(最短路+最小字典序路径)
- hdu 1385 spfa和floyd,dijkstra记录最短最小字典序的路径
- hdu 1385 最短路径按字典数输出
- hdu 1385 Minimum Transport Cost (最小字典序最短路径)
- hdu 1385 Minimum Transport Cost (Floyd 路径输出)
- hdu 1385 Minimum Transport Cost(判断字典序+输出路径)
- HDU 1385 Minimum Transport Cost(Floyd+打印字典序最小路径)
- HDU1385 Minimum Transport Cost(最短路输出路径)
- hdu 1814 2-sat 输出字典最小的和任意序列的 模板题
- HDOJ 1385 Minimum Transport Cost(dijkstar+字典路径||floyd+字典路径)
- hdu 1814 2-sat 输出字典最小的和任意序列的 模板题
- Minimum Transport Cost hdu 点权和边权的最短路+输出字典序最小的路径
- Floyd算法——保存路径——输出路径 HDU1385
- hdu 1385(最短路+输出路径)
- poj 2337 欧拉回路输出最小字典序路径 ***
- hdu 1385 Minimum Transport Cost(最短路 + 字典序最小路径)
- hdu 1385(求出最短路并输出最短路径)