还是畅通工程 http://vjudge.net/contest/view.action?cid=49515#problem/D

来源:互联网 发布:如何提高淘宝产品权重 编辑:程序博客网 时间:2024/05/18 03:52
 #include<iostream>#include<cstring>#include<cstdio>#define INF 0x7fffffffusing namespace std;const int maxn = 1010;int G[maxn][maxn];int dist[maxn];bool vis[maxn];int n,m,sum,num;int  Prim(){    sum=0;    for(int i=1;i<=n;i++){        dist[i]=G[1][i];        vis[i]=0;    }    vis[1]=1;    while(1){        int min=INF,p;        for(int i=1;i<=n;i++){            if(!vis[i]&&dist[i]<min){                min=dist[i];p=i;            }        }        if(min==INF)break;//最后一个点,跳出循环        sum+=min;        vis[p]=1;        for(int i=1;i<=n;i++){            if(!vis[i]&&dist[i]>G[p][i])                dist[i]=G[p][i];        }    }    return sum;}int main(){    while(scanf("%d",&n)!=EOF&&n){        for(int i=1;i<=n;i++){            for(int j=i+1;j<=n;j++)                G[i][j]=G[j][i]=INF;            G[i][i]=0;        }        for(int i=1;i<=(n*(n-1))/2;i++){            int a,b,v;            cin>>a>>b>>v;            if(G[a][b]>v)                G[a][b]=G[b][a]=v;        }      printf("%d\n",Prim());    }    return 0;}


0 0
原创粉丝点击