标签:
最小生成树树 prim算法,第一次写
#include<iostream> #define maxn 100+5 #define inf 1<<30 using namespace std; int n; int mapp[maxn][maxn]; int visit[maxn]; int d[maxn]; int re; void prim() { fill(visit,visit+maxn,0); fill(d,d+maxn,inf); d[1]=0; while(1) { int v=-1; for(int i=1;i<=n;i++) { if(!visit[i]&&(v==-1||d[i]<d[v])) v=i; } if(v==-1) break; re+=d[v]; visit[v]=1; for(int i=1;i<=n;i++) { if(!visit[i]&&d[i]>mapp[i][v]) d[i]=mapp[i][v]; } } } int main() { while(cin>>n) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>mapp[i][j]; } } int t; cin>>t; while(t--) { int x,y; cin>>x>>y; mapp[x][y]=0; mapp[y][x]=0; } re=0; prim(); cout<<re<<endl; } return 0; }
标签:
原文地址:http://blog.csdn.net/zafkiel_nightmare/article/details/45725401