AC代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 10005
int n,L;
struct node
{
int w,v,c,x;
}t[N],q[N];
int p[N];
int cnt;
int cmp(node p,node q)
{
return p.c<q.c;
}
int find(int k)
{
if(p[k]==k)
{
return p[k];
}
else
{
return find(p[k]);
}
}
int cl()
{
int sum=0;
for(int i=0;i<cnt;i++)
{
int x=find(q[i].w);
int y=find(q[i].v);
if(x!=y)
{
p[x]=y;
sum+=q[i].c;
}
}
return sum;
}
int main()
{
while(scanf("%d",&n)!=EOF&&n)
{
int i;
for(i=1;i<=n;i++)
{
p[i]=i;
}
L=(n*(n-1))>>1;
cnt=0;
for(i=0;i<L;i++)
{
scanf("%d%d%d%d",&t[i].w,&t[i].v,&t[i].c,&t[i].x);
if(t[i].x==1)
{
p[t[i].w]=t[i].v;
}
else
{
q[cnt].w=t[i].w;
q[cnt].v=t[i].v;
q[cnt].c=t[i].c;
cnt++;
}
}
sort(q,q+cnt,cmp);
int t=cl();
printf("%d\n",t);
}
return 0;
}