基本思想
1. 在图G=(V, E) (V表示顶点 ,E表示边)中,从集合V中任取一个顶点(例如取顶点v0)放入集合 U中,这时 U={v0},集合T(E)为空。
2. 从v0出发寻找与U中顶点相邻(另一顶点在V中)权值最小的边的另一顶点v1,并使v1加入U。即U={v0,v1 },同时将该边加入集合T(E)中。3. 重复2,直到U=V为止。这时T(E)中有n-1条边,T = (U, T(E))就是一棵最小生成树。#include#define MAXN 100#define INF (1<<20)int v[MAXN], w[MAXN][MAXN], d[MAXN], ans;int prim(int v0, int n){ int i; for(i=0; i c){ //如果有重边 w[a-1][b-1] = c; w[b-1][a-1] = c; } } printf("%d\n", prim(0, n)); } return 0;}
//重新更正取消icount变量 2013-02-15 21:33:50