您的位置:首页 > 其它

百练OJ-( Til the Cows Come Home)dijksra最短路径

2018-03-30 19:49 232 查看
#include<iostream>
#include<cstring>
#define inf 999999
using namespace std;
int T,N;
int edges[1001][1001];
int dis[1001];
int fg[1001];
int main() {
cin >>T>> N;
memset(edges, inf, sizeof(edges));
memset(dis, inf, sizeof(dis));
memset(fg, 0, sizeof(fg));
for (int i = 1; i <= N; i++) {
edges[i][i] = 0;
}
for (int i = 0; i < T; i++) {
int t1, t2, t3;
cin >> t1 >> t2 >> t3;
if (edges[t1][t2] > t3) {
edges[t1][t2] = t3;
edges[t2][t1] = t3;
}
}
for (int i = 1; i <= N; i++) {
dis[i] = edges
[i];
}
fg
= 1;
int min;
int u;
for (int i = 2; i <= N; i++) {
min = inf;
for (int j = 1; j <= N; j++) {
if (fg[j] == 0 && dis[j] < min) {
u = j;
min = dis[j];
}
}

fg[u] = 1;
for (int i = 1; i <= N; i++) {
if (fg[i] == 0 && dis[i] > dis[u] + edges[u][i]) {
dis[i] = dis[u] + edges[u][i];
}
}
}
cout << dis[1] << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: