您的位置:首页 > 理论基础 > 计算机网络

http://acm.hdu.edu.cn/showproblem.php?pid=2544&&最短路

2011-10-20 16:28 351 查看
水题。。。。dijstra算法。。。。

#include<iostream>
#include<string.h>
#include<algorithm>
#include<limits.h>
#define M 99999999
#define N 105
#define FOR(i,s,t) for(int i=(s);i<=t;++i)
using namespace std;
int dist
;
int map

;
bool visit
;
int n,m;
void Dijstra()
{ int now=1;
dist[now]=0;
visit[now]=false;
FOR(i,1,n)
{ FOR(j,1,n)
if(visit[j]&&dist[j]>dist[now]+map[now][j])
dist[j]=dist[now]+map[now][j];
int minx=M;
FOR(j,1,n)
if(visit[j]&&dist[j]<minx)
minx=dist[now=j];
visit[now]=false;
}
cout<<dist
<<endl;
}
int main()
{ while(cin>>n>>m&&n&&m)
{ FOR(i,1,n)
FOR(j,1,n)
{ dist[i]=M;
map[i][j]=M;
visit[i]=true;
}
FOR(i,1,m)
{ int a,b,c;
cin>>a>>b>>c;
if(map[a][b]>c)
map[a][b]=map[b][a]=c;
}
Dijstra();
} return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 c