标签:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 6 const int inf=0x3f3f3f; 7 int m,n; 8 int gp[105][105]; 9 int d[105]; 10 int vis[105]; 11 12 void dijkstra() 13 { 14 int i,j,pos,sum=0; 15 vis[1]=1; 16 for(i=2;i<=m;i++) 17 d[i]=gp[1][i]; 18 for(i=2;i<=m;i++) 19 { 20 int temp=inf; 21 for(j=1;j<=m;j++) 22 { 23 if(!vis[j]&&d[j]<temp) 24 { 25 pos=j; 26 temp=d[j]; 27 } 28 } 29 vis[pos]=1; 30 for(j=1;j<=m;j++) 31 { 32 if(d[pos]+gp[pos][j]<d[j]&&!vis[j]) 33 d[j]=gp[pos][j]+d[pos]; 34 } 35 } 36 printf("%d\n",d[m]); 37 } 38 39 int main() 40 { 41 int a,b,c; 42 while(scanf("%d%d",&m,&n),m|n) 43 { 44 memset(vis,0,sizeof(vis)); 45 memset(gp,inf,sizeof(gp)); 46 for(int i=0;i<n;i++) 47 { 48 scanf("%d%d%d",&a,&b,&c); 49 gp[a][b]=gp[b][a]=min(c,gp[a][b]); 50 } 51 dijkstra(); 52 } 53 return 0; 54 }
标签:
原文地址:http://www.cnblogs.com/homura/p/4721349.html