hdu 1874 畅通工程续 - 最短路
2013-08-07 10:11
267 查看
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1874
这题用Floyd比较方便,一般结点数在300以下的都可以用Floyd.
说一下需要注意的地方:
1.题目的意思说每两个结点可能有多条路,所以输入两结点的距离的时候要考虑是不是比之前可能输入过的距离短。
2.询问可能出现起点和终点是同一点的情况。
源代码:
http://acm.hdu.edu.cn/showproblem.php?pid=1874
这题用Floyd比较方便,一般结点数在300以下的都可以用Floyd.
说一下需要注意的地方:
1.题目的意思说每两个结点可能有多条路,所以输入两结点的距离的时候要考虑是不是比之前可能输入过的距离短。
2.询问可能出现起点和终点是同一点的情况。
源代码:
#include <iostream> #include<stdio.h> #define max 10000000 using namespace std; int d[105][105]; int main() { int n,m,i,j,k,s,e,temp_1,temp_2,t; while(scanf("%d %d",&n,&m)!=EOF){ for(i=0;i<n;i++) for(j=0;j<n;j++) if(i==j) d[i][j]=0; else d[i][j]=max; for(i=0;i<m;i++){ scanf("%d %d %d",&temp_1,&temp_2,&t); if(d[temp_1][temp_2]>t) d[temp_1][temp_2]=d[temp_2][temp_1]=t; } for(i=0;i<n;i++) for(j=0;j<n;j++) for(k=0;k<n;k++) if(d[j][k]>d[j][i]+d[i][k]) d[j][k]=d[j][i]+d[i][k]; scanf("%d %d",&s,&e); if(d[s][e]==max) printf("-1\n"); else printf("%d\n",d[s][e]); } return 0; }
相关文章推荐
- hdu 1874 畅通工程续(最短路)
- HDU1874-畅通工程续(Dijkstra最短路)
- 【HDU】-1874-畅通工程续(最短路)(dijkstra)
- hdu 1874 畅通工程续 ( 最短路(dij/floyd))
- HDU 1874 畅通工程续(最短路训练
- HDU1874 畅通工程续(最短路)
- HDU 1874 畅通工程续 / dijkstra算法 最短路实现
- hdu1874 畅通工程续(最短路)
- HDU 1874 畅通工程续 (最短路模板
- hdu_1874_畅通工程_最短路_dijkstra
- hdu 1874 畅通工程续(最短路Dij邻接矩阵)
- hdu 1874 畅通工程续【裸最短路】
- hdu 1874 畅通工程续 最短路spfa
- HDU 1874 畅通工程续 -- 全源最短路
- hdu 1874 畅通工程续(最短路Dij邻接表)
- HDU 1874 畅通工程续 最短路
- hdu 1874 畅通工程续(最短路spfa邻接矩阵)
- HDU-1874-畅通工程续 (最短路 贝尔曼Bellman_Ford)
- HDU 1874 畅通工程续(单源最短路之Dijkstra n^2算法)
- HDU 1874 畅通工程续(最短路)