void dijkstra(int k, int n) {
dis[k] = 0;
int t;
for (int i = 0; i < n; ++i) {
t = 0;
for (int j = 1; j <= n; ++j)
if (!st[j] && dis[j] < dis[t])
t = j;
st[t] = 1;
for (int j = 1; j <= n; ++j)
if (dis[j] > dis[t] + g[t][j])
dis[j] = dis[t] + g[t][j];
}
for (int i = 1; i <= n; ++i) {
if (dis[i] == 0x3f3f3f3f)
dis[i] = -1;
cout << dis[i] << " ";
}
return;
}
单源最短路径(dijkstra)
最新推荐文章于 2024-07-13 23:05:26 发布