题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544
最短路裸题,点数小,可以直接用Floyd求解
贴代码
#include<cstdio>
#include<cstring>
using namespace std;
int g[105][105];
int main(){
// freopen("2544.in","r",stdin);
// freopen("2544.out","w",stdout);
int n,m;
scanf("%d%d",&n,&m);
while (!(n==0&&m==0)){
memset(g,0X3f3f3f3f,sizeof(g));
int INF=g[0][0];
while (m--){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if (z<g[x][y])g[x][y]=g[y][x]=z;
}
for (int i=1;i<=n;i++)g[i][i]=0;
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
if (i!=k)for (int j=1;j<=n;j++)
if (j!=i&&j!=k)if (g[i][k]+g[k][j]<g[i][j])g[i][j]=g[i][k]+g[k][j];
printf("%d\n",g[1][n]);
scanf("%d%d",&n,&m);
}
return 0;
}
【写的有漏洞的,欢迎路过大神吐槽】
2017/07/24 22:15:13
Ending.