int vis[30]; int n; int map[30][30]; int d[30]; int prim(){ int i,j,mi,v; for(i=0;i<n;i++){ d[i]=map[0][i]; vis[i]=0; } for(i=1;i<=n;i++){ mi=1<<30; for(j=0;j<n;j++){ if(!vis[j] && mi>d[j]){ v=j; mi=d[j]; } } vis[v]=1; for(j=0;j<n;j++) if(!vis[j] && d[j]>map[v][j]) d[j]=map[v][j]; } for(i=1;i<n;i++) d[0]+=d[i]; return d[0]; }
原文:http://www.cnblogs.com/verlen11/p/4251134.html