poj_2387(最短路径Dijkstra)

来源:互联网 发布:河北网络公益广告大赛 编辑:程序博客网 时间:2024/04/30 16:44

#include "stdio.h"

const int maxV = 1001;const int maxE = 2001;const int maxLen = 999999;int dist[maxV];int length[maxV][maxV];int i,j;void Dijkstra(int v,int n){bool s[maxV];for(i=1;i<=n;++i){s[i]=0;dist[i]=length[v][i];}s[v]=1;dist[v]=0;for(i=2;i<=n;++i){int temp = maxLen;int u = v;for(j=1;j<=n;++j){if(!s[j]&&dist[j]<temp){u = j ;temp = dist[j];}}s[u]=1;for(j=1;j<=n;j++){if(!s[j]&&dist[j]>length[u][j]+dist[u])dist[j]=length[u][j]+dist[u];}}}int main(int argc, char* argv[]){int t,n;int a,b,len;//FILE *fp = freopen("data.txt","r",stdin);while(scanf("%d%d",&t,&n)!=EOF){for(i=1;i<=n;i++)for(j=1;j<=n;j++)length[i][j]=maxLen;for(i=0 ; i<t;i++){scanf("%d%d%d",&a,&b,&len);if(len<length[a][b])//重边{length[a][b]=len;length[b][a]=len;}}Dijkstra(n,n);printf("%d\n",dist[1]);}return 0;}


原创粉丝点击