zoj 3166 Lazy Tourist 最短路 floyd
2011-10-26 10:58
302 查看
我是这样理解的:floyd找每两点之间最短路,最后在有所有有hotel的节点中,找出w[i][i]最小的一个。。。。。
需要注意的是,在初始化中,w[i][i]应初始化为无穷大,即认为city和原city间无路(因为要出去)。
恩,还是一道floyd的水题。。。不过我现在只能刷水题了。。。。
需要注意的是,在初始化中,w[i][i]应初始化为无穷大,即认为city和原city间无路(因为要出去)。
恩,还是一道floyd的水题。。。不过我现在只能刷水题了。。。。
#include<stdio.h> #include<string.h> #define INF 1000000 int w[101][101],hotel[101]; int main() { int i,j,k,ww,u,v,path,city,hot,min; memset(hotel,0,sizeof(hotel)); while(scanf("%d%d",&city,&hot)!=EOF) { for(i=1;i<=city;i++) { for(j=1;j<=city;j++) w[i][j]=INF; } for(i=0;i<hot;i++) scanf("%d",&hotel[i]); scanf("%d",&path); for(i=0;i<path;i++) { scanf("%d%d%d",&u,&v,&ww); w[u][v]=ww; } for(k=1;k<=city;k++) for(i=1;i<=city;i++) for(j=1;j<=city;j++) /*if(w[i][j]<INF&&w[k][j]<INF)*/ if(w[i][j]>w[i][k]+w[k][j]) w[i][j]=w[i][k]+w[k][j]; min=INF; for(i=0;i<hot;i++) { k=hotel[i]; if(w[k][k]<min) { min=w[k][k]; j=k; } } if(min==INF) printf("I will nerver go to that city!\n"); else printf("%d\n",j); } return 0; }
相关文章推荐
- zoj 3166 Lazy Tourist(最短路Floyd)
- ZOJ 3166 Lazy Tourist 最短路floyd模版题
- ZOJ 3166 Lazy Tourist 最短路floyd模版题
- hdu 1385(zoj 1456)Minimum Transport Cost(最短路,输出路径,Floyd实现)
- zoj 1092 Arbitrage(最短路,floyd)
- zoj_3166_floyd_好久没打还翻车一次_丢人
- ZOJ - 3166 Lazy Tourist
- zoj 1221 Risk 最短路 floyd
- zoj 1232(Floyd预处理 + 状态图上的最短路(好题))
- ZOJ-1456 Minimum Transport Cost 最短路floyd路径输出
- ZOJ 3166 Lazy Tourist
- 最短路 spfa, dijkstra, Floyd
- ZOJ2750_Idiomatic Phrases Game(最短路)
- hdu2544 最短路 (floyd)
- poj 2240 Arbitrage(Floyd最短路)
- poj 2253 Frogger(最短路 floyd)
- HDU-1869 最短路 FLOYD
- 最短路(hdu2544,floyd最短路)
- HDU1217 - Arbitrage - 思维+乘法求最大的最短路(Floyd+spfa)
- lightoj 1019 - Brush (V) 【最短路 floyd】