首页 > 其他 > 详细

最短路径迪杰斯特拉模板

时间:2016-05-26 10:02:03      阅读:214      评论:0      收藏:0      [点我收藏+]

#include<iostream>
using namespace std;
#define MAX 0x3f3f3f3f
#define max 205
int map[max][max],sign[max];

int main()
{
int n,m,i,j,a,b,d;
while(cin>>n>>m)
{
for(i=0;i<n;i++)
{
sign[i]=0;
for(j=0;j<n;j++)
{
if(i==j) map[i][j]=0; //注意
else map[i][j]=MAX;
}
}
while(m--)
{
cin>>a>>b>>d;
if(map[a-1][b-1]>d) map[a-1][b-1]=map[b-1][a-1]=d; //注意
}
// cin>>a>>b;
int min,u;
a=0;
b=n-1;
sign[a]=1;

//接下来是精髓


for(i=0;i<n;i++)
{
min=MAX;
for(j=0;j<n;j++)
if(!sign[j]&&min>map[a][j])
{
min=map[a][j];
u=j;
}
sign[u]=1;
for(j=0;j<n;j++)
if(!sign[j]&&map[u][j]<MAX)
{

if(min+map[u][j]<map[a][j])
map[a][j]=min+map[u][j];

}
}
if(map[a][b]<MAX) cout<<map[a][b]<<endl;
else cout<<"-1"<<endl;
}
return 0;
}

 

/**************************************
Problem id : SDUT OJ 2143
User name : 大领主
Result : Accepted
Take Memory : 564K
Take Time : 30MS
Submit Time : 2016-05-26 08:34:59
**************************************/

最短路径迪杰斯特拉模板

原文:http://www.cnblogs.com/woyaocheng/p/5529736.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!