#include <stdio.h> #include <stdlib.h> #define inf 999999 bool visit[6] = {false}; int dist[6] = {0}; int graph[6][6] = { {inf, 7, 4, inf, inf, inf}, {7, inf, 6, 2, inf, 4}, {4, 6, inf, inf, 9, 8}, {inf, 2, inf, inf, inf, 7}, {inf, inf, 9, inf, inf, 1}, {inf, 4, 8, 7, 1, inf}}; int prim (int cur) { int index = cur; int sum = 0; printf("%d ", index); visit[cur] = true; for (int i=0; i<6; i++) {//计算cur与其他节点的距离 dist[i] = graph[cur][i]; } for (int i=1; i<6; i++) { int min = inf; for (int j=0; j<6; j++) { if (!visit[j] && dist[j] < min) { min = dist[j]; index = j; } } visit[index] = true; printf("%d ", index); sum += min; for (int j=0; j < 6; j++) { if (!visit[j] && graph[index][j] < dist[j]) { dist[j] = graph[index][j]; } } } return sum; } int main (int argc, char **argv) { printf("%d", prim(0)); return 0; }
数据结构:prim算法
猜你喜欢
转载自blog.csdn.net/thelostlamb/article/details/79452259
今日推荐
周排行