ZOJ 3166 Lazy Tourist 最短路floyd模版题
2013-08-29 10:32
351 查看
典型的水floyd
View Code
#include<stdio.h> #include<algorithm> #include<string.h> using namespace std; #define INF 1000000 #define maxn 1001 int adj[maxn][maxn],dis[maxn][maxn],pos[maxn]; int n, m, num; void floyd() { int i ,j ,k; for(i=1;i<=n;i++) for(j=1;j<=n;j++) dis[i][j]=adj[i][j]; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(k!=i&&k!=j) if(dis[i][k]+dis[k][j]<dis[i][j]) dis[i][j]= dis[i][k]+dis[k][j]; } void work() { floyd(); int i, j, k, v, min; v=-1;min = INF; for(k=0;k<num;k++) { int u=pos[k]; for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(u!=i&&u!=j) if(dis[i][u]+dis[u][j]+dis[j][i]<min &&dis[j][i]!=INF) { min = dis[i][u]+dis[u][j]+dis[j][i]; v = u; } } if(v == -1)printf("I will nerver go to that city!\n"); else printf("%d\n",v); } int main() { int i ,j, x, y, w; while(~scanf("%d%d",&n,&num)) { for(i=0;i<num;i++) scanf("%d",&pos[i]); sort(pos,pos+num); for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(i!=j)adj[i][j]=INF; else adj[i][j]=0; scanf("%d",&m); while(m--) { scanf("%d%d%d",&x,&y,&w); if(adj[x][y]>w)adj[x][y]=w; } work(); } 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_3166_floyd_好久没打还翻车一次_丢人
- zoj 1232(Floyd预处理 + 状态图上的最短路(好题))
- ZOJ-1456 Minimum Transport Cost 最短路floyd路径输出
- HDU2544 最短路(模版题dijkstra/floyd/spfa)
- zoj 1092 Arbitrage(最短路,floyd)
- ZOJ - 3166 Lazy Tourist
- zoj 1221 Risk 最短路 floyd
- ZOJ 3166 Lazy Tourist
- 模板--Floyd Dijkstra Bellman-Ford spfa 四种最短路经典算法
- Aizu 0189 (多源 最短路Floyd )
- zoj 1285 Shipping Routes(最短路)
- 最短路模版整理
- (floyd+DP) zoj 1232
- 最短路(Floyd(弗洛伊德)算法)B - 畅通工程续(3个for循环)
- Frogger POJ - 2253(Floyd最短路变形)
- zoj 3232 It's not Floyd Algorithm(强联通分量,缩点)