poj 2387 Til the Cows Come Home -- 最短路dijstra

来源:互联网 发布:淘宝图库 编辑:程序博客网 时间:2024/05/21 17:13
<span style="font-size:18px;">利用dijstra求单源最短路,利用floyd会超时的</span>
#include <stdio.h>#include <string.h>#include <algorithm>#define inf 0x3f3f3f3fusing namespace std;const int N = 1005;int map[N][N];int vis[N];int dis[N];int m,n;void dij(){int i,j;memset(vis,0,sizeof(vis));for(i=1;i<=n;i++){if(i==1) dis[i]=0;else dis[i]=map[1][i];}vis[1]=1;for(i=2;i<=n;i++){int m=inf,t;for(j=1;j<=n;j++){if(!vis[j]&&dis[j]<m){t=j;m=dis[j];}}vis[t]=1;for(j=1;j<=n;j++){if(!vis[j]&&dis[j]>dis[t]+map[t][j])dis[j]=dis[t]+map[t][j];}}}int main(){int i,j;while(~scanf("%d %d",&m,&n)){memset(map,inf,sizeof(map));for(i=1;i<=m;i++){int x,y,z;scanf("%d %d %d",&x,&y,&z);map[x][y]=min(map[x][y],z);map[y][x]=min(map[y][x],z);}dij();printf("%d\n",dis[n]);}return 0;}


                                             
0 0