Hdu1879 - 继续畅通工程 - 最小生成树

来源:互联网 发布:洪玄公捏脸数据 编辑:程序博客网 时间:2024/05/22 09:11
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int p[105];struct R{int st,ed,len,time;}road[10000];int find(int n){return p[n]==n?p[n]:find(p[n]);}int cmp(R a,R b){return a.len<b.len;}int main(){int n,i;while(scanf("%d",&n)!=EOF){if(n==0){break;}for(i=1;i<=n;i++){p[i]=i;}memset(road,0,sizeof(road));for(i=1;i<=n*(n-1)/2;i++){scanf("%d%d%d%d",&road[i].st,&road[i].ed,&road[i].len,&road[i].time);if(road[i].time==1){road[i].len=0;}}sort(road+1,road+n*(n-1)/2+1,cmp);int count=0;int sum=0;i=1;while(count<n-1){int a=find(road[i].ed);int b=find(road[i].st);if(a!=b){p[a]=b;count++;sum+=road[i].len;}i++;}printf("%d\n",sum);}}

0 0
原创粉丝点击