prim求MST
PRIM==>>MST模板
#include <iostream> using namespace std; #define typec int #define V 3 const typec inf=0x3f3f3f3f; int vis[V]; typec lowc[V]; /*==================================================*\ | Prim求MST | INIT: cost[][]耗费矩阵(inf为无穷大); | CALL: prim(cost, n); 返回-1代表原图不连通; \*==================================================*/ typec prim(typec cost[][V],int n) { int i,j,p; typec minc,res=0; memset(vis,0,sizeof(vis)); vis[0]=1; for(i=1; i<n; i++) lowc[i]=cost[0][i]; for(i=1; i<n; i++) { minc=inf; p=-1; for(j=0; j<n; j++) { if(0==vis[j]&&minc>lowc[j]) { minc=lowc[j]; p=j; } } if(inf==minc) return -1; res+=minc; vis[p]=1; for(j=0; j<n; j++) if(0==vis[j]&&lowc[j]>cost[p][j])lowc[j]=cost[p][j]; } return res; } int main() { int cost[3][3]= {0,990,692,990,0,179,692,179,0}; cout << prim(cost,3) << endl; return 0; }