int cost[MAX_V][MAX_V];
int d[MAX_V];
bool used[MAX_V];
int N, M, C, A, B;
void init() {
for(int i = 0; i <= N; i++) {
for(int j = 0; j <= i; j++) {
if(i == j) {
cost[i][j] = 0;
}
else {
cost[i][j] = cost[j][i] = INF;
}
}
used[i] = false;
d[i] = INF;
}
}
void dijkstra(int s) {
for(int i = 1; i <= N; i++) {
d[i] = cost[s][i];
}
used[s] = true;
for(int i = 2; i <= N; i++) {
int mind = INF;
int u;
for(int j = 1; j <= N; j++) {
if(!used[j]) {
if(d[j] < mind) {
mind = d[j];
u = j;
}
}
}
if(mind == INF) break;
used[u] = true;
for(int j = 1; j <= N; j++) {
if(!used[j]) {
if(d[j] > d[u] + cost[u][j]) {
d[j] = d[u] + cost[u][j];
}
}
}
}
}
dijkstra邻接矩阵形式
最新推荐文章于 2021-01-14 19:54:25 发布