继续畅通工程 #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; int pri[10101]; struct s { int b; int e; int num; int v; }a[10101]; bool cmp(s a,s d) { if(a.v==d.v) return a.num<d.num; return a.v>d.v; } int find(int x) { int r=x; while(r!=pri[r]) r=pri[r]; int i=x,j; while(i!=r) { j=pri[i]; pri[i]=r; i=j; } return r; } int main() { int n,s; int i,sum,k,fa,fb; while(scanf("%d",&n)!=EOF,n) { sum=0; k=n*(n-1)/2; for(i=1;i<=n;i++) pri[i]=i; for(i=0;i<k;i++) scanf("%d%d%d%d",&a[i].b,&a[i].e,&a[i].num,&a[i].v); sort(a,a+k,cmp); for(i=0;i<k;i++) { fa=find(a[i].b); fb=find(a[i].e); if(fa!=fb) { pri[fb]=fa; if(a[i].v==0) sum+=a[i].num; } } printf("%d\n",sum); } return 0; }