分析:模板题
1 #include"iostream" 2 #define INF 65535 3 using namespace std; 4 const int maxn=100+10; 5 int w[maxn][maxn],d[maxn],n,m; 6 void Dijkstra() 7 { 8 int final[maxn]; 9 for(int i=1;i<=n;i++) 10 { 11 final[i]=0; 12 d[i]=w[1][i]; 13 } 14 final[1]=1;d[1]=0; 15 for(int i=2;i<=n;i++) 16 { 17 int min=INF,k; 18 for(int i=1;i<=n;i++) if(!final[i]&&d[i]<min) min=d[k=i]; 19 final[k]=1; 20 for(int i=1;i<=n;i++){ 21 if(!final[i]&&d[i]>d[k]+w[k][i]) 22 d[i]=d[k]+w[k][i]; 23 } 24 } 25 cout<<d[n]<<endl; 26 } 27 int main() 28 { 29 while(cin>>n>>m&&n) 30 { 31 for(int i=1;i<=n;i++) 32 for(int j=1;j<=n;j++) 33 { 34 if(i==j) w[i][j]=0; 35 else w[i][j]=INF; 36 } 37 int a,b,c; 38 for(int i=0;i<m;i++) 39 { 40 cin>>a>>b>>c; 41 w[a][b]=w[b][a]=c; 42 } 43 Dijkstra(); 44 } 45 return 0; 46 }
时间: 2024-10-14 01:24:00