#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#define MAX 0x3f3f3f// MAX设置要注意
using namespace std;
struct Node
{
int time;
int from;
int to;
};
int visit[101];
int dis[101];
typedef vector<Node>*Graph;
void add_node(Graph G, int from, int to, int time)
{
Node a,b;
a.time = time; a.from = from; a.to = to;
b.time = time; b.from = to; b.to = from;
G[from].push_back(a);
G[to].push_back(b);
}
void dijstra(Graph G, int n)
{
memset(visit, 0, sizeof(visit));
memset(dis, MAX, sizeof(dis));
dis[1] = 0;
for (int i = 1; i <= n; i++)
{
int minval= MAX;
int minnum;
for (int j = 1; j <= n; j++)
if (!visit[j] && minval > dis[j])
minval= dis[j],minnum=j;
visit[minnum] = 1;
for (int k = 0; k<G[minnum].size(); k++)
{
if (!visit[G[minnum][k].to])
dis[G[minnum][k].to] = min(dis[G[minnum][k].to], dis[minnum] + G[minnum][k].time);
}
}
}
int main()
{
long n, m;
while (cin >> n >> m,n,m)
{
vector<Node> G[102];
long from, to, time;
for (int i = 1; i <= m; i++)
{
cin >> from >> to >> time;
add_node(G,from, to, time);
}
dijstra(G, n);
cout << dis[n]<<endl;
}
}
关于无穷大0x3f3f3f的设置 原因可以参考http://www.cnblogs.com/zzzzone/p/6347118.html
HDU 2544 最短路dijstra算法
最新推荐文章于 2019-03-13 22:42:00 发布