最短路
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 49492 Accepted Submission(s): 21790
输入保证至少存在1条商店到赛场的路线。
2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0
32
//最短路 #include<stdio.h> #include<string.h> int dis[11000][11000]; #define inf 0x7ffffff int main() { int i,j,k,t; int n,m; int a,b,c; while(scanf("%d%d",&n,&m),m&&n) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i==j) dis[i][j]=0;//自己到自己就是0 else dis[i][j]=inf; //其他的就是无穷大 } for(i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c); if(c<dis[a][b]) dis[a][b]=dis[b][a]=c; //赋值 } for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(dis[i][j]>dis[i][k]+dis[k][j]) dis[i][j]=dis[i][k]+dis[k][j]; //松弛,就是更新,并且是层层更新 printf("%d\n",dis[1][n]);//输出第一个点到最后一个点的距离 } return 0; }
ACM大赛集训第一天!加油