zoj3659
Posted zsben991126
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zoj3659相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<algorithm> #include<cstring> #define ll long long #include<cstdio> #define MAXN 200005 using namespace std; int F[MAXN]; int num[MAXN]; ll s[MAXN]; struct Edge{ int a,b,cost; }e[MAXN]; int cmp(Edge &a,Edge &b){ return a.cost>b.cost; } int find(int x){ if(F[x]==-1) return x; return F[x]=find(F[x]); } int main(){ int n; while(scanf("%d",&n)==1){ for(int i=1;i<=n;i++){ F[i]=-1; num[i]=1; s[i]=0; } for(int i=0;i<n-1;i++) scanf("%d%d%d",&e[i].a,&e[i].b,&e[i].cost); sort(e,e+n-1,cmp); //手动合并 int t1,t2; for(int i=0;i<n-1;i++){ t1=find(e[i].a); t2=find(e[i].b); if(t1!=t2){ s[t2]=max((ll)s[t1]+(ll)e[i].cost*num[t2],(ll)s[t2]+(ll)e[i].cost*num[t1]); num[t2]+=num[t1]; F[t1]=t2; } } printf("%lld ",s[t2]); } return 0; }
以上是关于zoj3659的主要内容,如果未能解决你的问题,请参考以下文章
POJ 3659 Cell Phone Network (树dp)
POJ3659 [usaco2008jan_gold]电话网络
POJ3659 Cell Phone Network(树上最小支配集:树型DP)