hdu 4424 Conquer a New Region 并查集
2013-11-04 20:12
302 查看
去年长春的时候没做出来,现在看起来也并不困难,反着把大的边开始加就好。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn=2e5+9; int n; int fa[maxn]; long long sum[maxn],son[maxn]; struct E { int from,to,w; bool operator <(const E &xx) const { return w<xx.w; } }e[maxn]; int find(int x) { if(fa[x]!=x) fa[x]=find(fa[x]); return fa[x]; } void merge(int a,int b,int w) { int f1=find(a); int f2=find(b); long long mmax=max(sum[f1]+son[f2]*w,sum[f2]+son[f1]*w); sum[f1]=mmax; fa[f2]=f1; son[f1]+=son[f2]; } int main() { // freopen("in.txt","r",stdin); while(scanf("%d",&n)!=EOF) { for(int i=1;i<n;i++) scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].w); sort(e+1,e+n); for(int i=1;i<=n;i++) fa[i]=i,son[i]=1,sum[i]=0; for(int i=n-1;i>=1;i--) { merge(e[i].from,e[i].to,e[i].w); } cout<<sum[find(1)]<<endl; } return 0; }
相关文章推荐
- HDU 4424 Conquer a New Region (并查集)
- HDU 4424 Conquer a New Region 并查集
- HDU 4424 Conquer a New Region 并查集
- HDU 4424 Conquer a New Region【并查集】【思维题】
- 【并查集】 HDU 4424 Conquer a New Region 贪心
- 【并查集】 HDU 4424 Conquer a New Region 贪心
- ZOJ 3659 &amp; HDU 4424 Conquer a New Region (并查集)
- Conquer a New Region HDU - 4424 (并查集)
- hdu 4424 Conquer a New Region(并查集+贪心)
- hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)
- hdu 4424 Conquer a New Region 并查集
- hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)
- Conquer a New Region HDU - 4424(带权并查集的dp)
- hdu 4424 Conquer a New Region(并查集)
- HDU 4424 Conquer a New Region(分治 并查集 最大生成树)
- HDU-4424 Conquer a New Region(并查集)
- hdu 4424 Conquer a New Region(并查集)
- ZOJ 3659 & HDU 4424 Conquer a New Region (并查集)
- hdu 4424 Conquer a New Region(并查集,4级)
- hdu 4424 Conquer a New Region(并查集,4级)