ACM/ICPC World Finals 2010 D Castles
来源:互联网 发布:js给dom添加属性 编辑:程序博客网 时间:2024/04/25 18:28
题目大意
给定一棵无根树,树的每一个节点上有一个城市,现在要从任意一个城市开始攻打,攻下每个城市需要
解答
很容易就可以想到,应该先攻打
然后再一重循环算出
参考代码
#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 200;const int MAXM = 400;class Edge{ public: int to; int next;};Edge es[MAXM];int head[MAXN];int et = 0;int f[MAXN], g[MAXN];int a[MAXN], m[MAXN], h[MAXN];int n;void addEdge(int u, int v){ et++; es[et].to = v; es[et].next = head[u]; head[u] = et; et++; es[et].to = u; es[et].next = head[v]; head[v] = et;}bool cmp(int i, int j){ return f[i] > f[j];}void dfs(int now, int fa){ int tmp[MAXN]; int p = 0; f[now] = 0; g[now] = m[now]+h[now]; for (int i = head[now]; i; i = es[i].next) { if (es[i].to == fa) continue; dfs(es[i].to, now); tmp[p++] = es[i].to; g[now] += g[es[i].to]; } sort(tmp, tmp+p, cmp); f[now] = max(a[now]-m[now]-h[now], 0); for (int i = 0; i < p; i++) { if (f[now] < a[tmp[i]]) f[now] = f[tmp[i]]; else f[now] += f[tmp[i]]-a[tmp[i]]; }}void readin(){ scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d %d %d", &a[i], &m[i], &h[i]); int x, y; for (int i = 1; i < n; i++) { scanf("%d %d", &x, &y); addEdge(x, y); }}int ans = 2147483647;;void work(){ for (int i = 1; i <= n; i++) { dfs(i, 0); ans = min(ans, f[i]+g[i]); } printf("%d\n", ans);}int main(){ readin(); work(); return 0;}
0 0
- ACM/ICPC World Finals 2010 D Castles
- ACM/ICPC World Finals 2013 D Factors
- ACM/ICPC World Finals 2012 D Fibonacci Words
- ACM-ICPC World Finals 2017
- ACM-ICPC 2013 World Finals 简单题解
- Puzzle, ACM/ICPC World Finals 1993, UVa227
- Puzzle,ACM/ICPC World Finals 1993,UVa227
- Gym 101205 (ACM-ICPC World Finals 2012)
- Puzzle,ACM/ICPC World Finals 1993, UVa227
- Sqaures, ACM/ICPC World Finals 1990, UVa
- 浙江大学获ACM-ICPC World Finals …
- 【ACM ICPC World Finals 2012】 Curvy Little Bottles (二分)
- Crossword Answers, ACM/ICPC World Finals 1994, UVa232
- Repeating Decimals, ACM/ICPC World Finals 1990, UVa202
- ACM/ICPC World Finals 2013 A Self-Assembly
- ACM/ICPC World Finals 2013 C Surely You Congest
- ACM/ICPC World Finals 2013 F Low Power
- ACM/ICPC World Finals 2012 B Curvy Little Bottles
- js callee和call写递归
- OC10 -- block / 多态
- 《Java程序性能优化》学习笔记之ArrayList和LinkedList
- 类型转换中存在的问题
- IOS开发概述-07.IOS程序启动原理
- ACM/ICPC World Finals 2010 D Castles
- 关于二叉树的顺序存储和链式存储
- Cocos2d-JS开发常见问题汇总
- 51. N-Queens
- Oracle 检索数据
- 暑假集训第三周 STL 双队列
- 扩展欧几里得算法(两行代码求最大公约数)
- 单链表操作
- Android AsyncTask