最短路径 hdu2544 dijkstra算法

来源:互联网 发布:网络歌曲dj大连唱视频 编辑:程序博客网 时间:2024/06/07 01:58

与prim算法好像。。

#include <iostream>using namespace std;const int maxn=100000000;const int mm=1000;int n,m,map[mm][mm];int dijkstra(){int cost[mm];bool v[mm];for(int i=2;i<=n;i++)  //prim算法也是从第二个开始{cost[i]=map[1][i];v[i]=0;}v[1]=1;for(int i=2;i<=n;i++){int minn=maxn,k;for(int j=2;j<=n;j++)if(!v[j]&&cost[j]<minn)minn=cost[j],k=j;v[k]=1;for(int j=2;j<=n;j++)if(!v[j]&&cost[j]>cost[k]+map[k][j])   //唯一区别。cost[j]=cost[k]+map[k][j];}return cost[n];}int main(){while(cin>>n>>m&&n&&m){for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)map[i][j]=maxn;for(int i=1;i<=m;i++){int a,b,c;cin>>a>>b>>c;map[a][b]=map[b][a]=c;}cout<<dijkstra()<<"\n";}return 0;}


0 0
原创粉丝点击