HDU-4714 Tree2cycle(树型dp)
来源:互联网 发布:科学大众网络比赛 编辑:程序博客网 时间:2024/06/13 23:55
传送门:HDU-4714
题意:一棵树有n个节点,有2种操作:①删除1条边;②添加1条边。每次操作花费为1,要求用最小花费使得这棵树变成一个环:整个图有n条边,每个点的度为2且构成1个联通块
题解:树型dp
dp以u为根节点的子树时时记录2种状态:①将子树变成一条链且其中一端为u的最小花费;②将子树变成一条链的最小花费
#pragma comment(linker, "/STACK:1024000000,1024000000")#include<stdio.h>#include<algorithm>using namespace std;typedef long long LL;const int MX = 1e6 + 5;const int inf = 0x3f3f3f3f;struct Edge { int v, nxt;} E[MX * 2];int head[MX], tot, n, m;void add(int u, int v) { E[tot].v = v; E[tot].nxt = head[u]; head[u] = tot++;}void init() { for (int i = 1; i <= n; i++) head[i] = -1; tot = 0;}int f[MX], dp[MX];void dfs(int u, int fa) { f[u] = dp[u] = 0; int cnt1 = inf, cnt2 = inf, sz = 0; for (int i = head[u]; ~i; i = E[i].nxt) { int v = E[i].v; if (v == fa) continue; dfs(v, u); f[u] += dp[v]; dp[u] += dp[v]; if (f[v] - dp[v] < cnt1) { cnt2 = cnt1; cnt1 = f[v] - dp[v]; } else if (f[v] - dp[v] < cnt2) cnt2 = f[v] - dp[v]; sz++; } if (sz > 0) { f[u] = min(f[u] + 2 * sz, f[u] + cnt1 + 2 * (sz - 1)); dp[u] = min(dp[u] + 2 * sz, dp[u] + min(cnt1 + cnt2 + 2 * (sz - 2), cnt1 + 2 * (sz - 1))); }}int main() { int T; //freopen("in.txt", "r", stdin); scanf("%d",&T); while (T--) { scanf("%d", &n); init(); for (int i = 1, u, v; i < n; i++) { scanf("%d%d", &u, &v); add(u, v); add(v, u); } dfs(1, -1); printf("%d\n", dp[1] + 1); } return 0;}
阅读全文
0 0
- HDU-4714 Tree2cycle(树型dp)
- HDU 4714 Tree2cycle(树型DP)
- hdu 4714 Tree2cycle dp
- 树形dp-hdu-4714-Tree2cycle
- hdu 4714 Tree2cycle (树形dp)
- HDU 4714 Tree2cycle(树形dp)
- HDU 4714 Tree2cycle (构造,树形DP)
- HDOJ 题目4714 Tree2cycle(树形DP)
- HDU 4714 Tree2cycle
- hdu 4714 Tree2cycle
- HDU 4714 Tree2cycle
- hdu 4714 Tree2cycle
- hdu 4714 Tree2cycle
- Hdu 4714 Tree2cycle - DFS
- HDU 4714 Tree2cycle
- HDU 4714 Tree2Cycle
- HDU 4714 Tree2cycle
- HDU 4714 Tree2cycle
- (9)2017.8.9-面向对象(4)
- 10072---多线程交替打印奇偶数
- Hdu-6086 Rikka with String(AC自动机+DP)
- CSS 清浮动详解
- RedHat下安装Python3
- HDU-4714 Tree2cycle(树型dp)
- 莫比乌斯反演与莫比乌斯函数
- 执行环境及作用域
- jsp九大隐式对象和jsp内置标签和jsp的usebean标签
- Unity3D基础(1)_AssetBundle
- 在CentOS 7系统上安装RabbitMQ
- 2017 暑假艾教集训 day9(整体二分 + cdq分治 cdq真是我女神!!!)
- 22大街
- 【SpringCloud】(九):Feign的自定义配置