2435: [Noi2011]道路修建
2018-07-08 15:09
288 查看
2435: [Noi2011]道路修建
https://www.lydsy.com/JudgeOnline/problem.php?id=2435
/* 开始读错题了,以为顺序修建给定的边,计算费用,算的样例是12。 每条边的权值就是两边的点的差的绝对值*这条边的长度。 dfs一遍 */ #include<bits/stdc++.h> using namespace std; typedef long long LL; inline int read() { int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1; for (;isdigit(ch);ch=getchar())x=x*10+ch-'0';return x*f; } const int N = 1000005; int head ,nxt[N<<1],to[N<<1],val[N<<1],siz ,Enum,Sum; LL Ans; // --- inline void add_edge(int u,int v,int w) { ++Enum;to[Enum] = v, val[Enum] = w, nxt[Enum] = head[u],head[u] = Enum; } void dfs(int u,int fa) { siz[u] = 1; for (int i=head[u]; i; i=nxt[i]) { int v = to[i]; if (v == fa) continue; dfs(v,u); siz[u] += siz[v]; Ans += 1ll * abs(Sum - siz[v] - siz[v]) * val[i]; } } int main() { int n = read();Sum = n; for (int i=1; i<n; ++i) { int u = read(),v = read(),w = read(); add_edge(u,v,w);add_edge(v,u,w); } dfs(1,0); cout << Ans; return 0; }
相关文章推荐
- bzoj 2435: [Noi2011]道路修建 (dfs)
- 2435: [Noi2011]道路修建 - BZOJ
- BZOJ_2435_[Noi2011]道路修建_dfs
- 【BZOJ2435】[Noi2011]道路修建【TreeDP】
- bzoj 2435: [Noi2011]道路修建
- [树剖?]bzoj2435: [Noi2011]道路修建
- 【BZOJ】2435: [Noi2011]道路修建(树形dp)
- 【bzoj2435】 NOI2011 道路修建 水题
- [BZOJ2435][Noi2011]道路修建(树形dp)
- 【DFS】bzoj2435 [Noi2011]道路修建
- [bzoj2435][Noi2011]道路修建(树上dp)
- BZOJ2435 [Noi2011]道路修建 【树形Dp 吧。。】
- 【BZOJ2435】【Noi2011】道路修建 树形DP
- bzoj 2435: [Noi2011]道路修建 树上 dp
- 2435: [Noi2011]道路修建
- BZOJ2435 [Noi2011]道路修建 【树形Dp 吧。。】
- bzoj2435 [Noi2011]道路修建 dfs
- [BZOJ2435]NOI2011道路修建|dfs|bfs
- BZOJ2435 NOI2011道路修建
- bzoj 2435: [Noi2011]道路修建(DFS)