邻接矩阵法
- 初始化dist数组, 出发点最短距离为0, 其余点为inf
- 遍历n次, 查找最短距离点t
- 用该点t, 去更新其他每个点的最短路
const int N = 110;
class Solution {
public:
int g[N][N], dist[N];
bool st[N];
int n;
int dijkstra(int k) {
// 先初始化
memset(dist, 0x3f, sizeof dist);
dist[k] = 0;
for (int i = 0; i < n; i++) { // 循环n次
int t = -1;
for (int j = 1; j <= n; j++) { // 查找最短的点
if (!st[j] && (t == -1 || dist[j] < dist[t])) {
t = j;
}
}
for (int j = 1; j <= n; j++) { // 用t去更新每个点的距离
dist[j] = min(dist[j], dist[t] + g[t][j]);
}
st[t] = true;
}
int maxn = dist[1];
for (int i = 1; i <= n; i++) maxn = max(maxn, dist[i]);
return maxn == 0x3f3