hdu 1874 畅通工程续

来源:互联网 发布:梅花谱棋谱软件 编辑:程序博客网 时间:2024/04/29 22:09

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874

就是裸的单源最短路。。

做的时候还是遇到了一些错误。。比如题目上说的,、、每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。应该在输入的时候就要更新a-b的最短距离。

还有一开始开了个N=0x7fffffff  ...这种题肯定是不行的。。。因为这个数和其他数相加会越界。。

还有就是我自作主张把相关联的k循环放在了里面 也错了。。。=  =!。。


下面是用floyd算法的AC代码:

#include<iostream>using namespace std;#define N  99999999int map[205][205];int main(){int n,m;int i,j,k;while(cin>>n>>m){int a,b,x,s,t;for(i=0;i<n;i++)for(j=0;j<n;j++){if(i==j)map[i][j]=0;elsemap[i][j]=N;}for(i=0;i<m;i++){cin>>a>>b>>x;if(x<map[a][b]){map[a][b]=x;map[b][a]=x;}}cin>>s>>t;for(k=0;k<n;k++)for(i=0;i<n;i++)if(k!=i){for(j=0;j<n;j++)if(j!=i&&k!=j){if(map[i][j]>map[i][k]+map[k][j])map[i][j]=map[i][k]+map[k][j];}}if(map[s][t]!=N)printf("%d\n",map[s][t]);elseprintf("-1\n");}return 0;}



原创粉丝点击