#include<bits/stdc++.h>
struct shu{
int a,b,v,t;
}c[10000];
bool cmp(shu x,shu y){
if(x.t!=y.t)
return x.t>y.t;
else return x.v<y.v;
}
int pre[10000];
int find(int x){
if(x!=pre[x])
return find(pre[x]);
else return x;
}
join(int x,int y){
int fx,fy;
fx=find(x);fy=find(y);
if(fx!=fy)
pre[fx]=fy;
}
using namespace std;
int main(){
int n,m,i,s=0;
while(scanf("%d",&n)&&n!=0){
s=0;
for(i=1;i<=10000;i++)
pre[i]=i;
m=n*(n-1)/2;
memset(c,0,sizeof(c));
for(i=1;i<=m;i++){
scanf("%d%d%d%d",&c[i].a,&c[i].b,&c[i].v,&c[i].t);
}
sort(c+1,c+m+1,cmp);
for(i=1;i<=m;i++){
if(find(c[i].a)!=find(c[i].b)){
if(c[i].t==0)
s=s+c[i].v;
join(c[i].a,c[i].b);
}
}
printf("%d\n",s);
}
return 0;
}
hdu 1879继续畅通工程
最新推荐文章于 2021-05-11 20:46:10 发布