hdu 2544

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544

Dijkstra。。。。#include<iostream> using namespace std; const int MAX=1001; const int MAXINT=99999999; int map[MAX][MAX]; int visit[MAX]; int dist[MAX]; int n,m; void Dijkstra() { for(int i=1;i<=n;i++) { visit[i]=0; dist[i]=map[1][i]; } int k,min; visit[1]=1; for(int i=1;i<n;i++) { min=MAXINT; for(int j=1;j<=n;j++) if(!visit[i]) if(min>dist[j]) { min=dist[j]; k=j; } visit[k]=1; for(int j=1;j<=n;j++) if(!visit[j]&&map[k][j]&&(dist[j]>dist[k]+map[k][j])) dist[j]=dist[k]+map[k][j]; } } int main() { while(cin>>n>>m) { if(n==0&&m==0) break; int x,y,cost; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) map[i][j]=MAXINT; map[i][i]=0; } for(int i=1;i<=m;i++) { cin>>x>>y>>cost; if(cost<map[x][y]) map[x][y]=map[y][x]=cost; } Dijkstra(); cout<<dist[n]<<endl; } return 0; }

你可能感兴趣的:(ini)