HDU 4714 Tree2cycle(树型DP)
来源:互联网 发布:aws s3 java 开发文档 编辑:程序博客网 时间:2024/06/14 00:11
解题思路:
将一棵树变成一个环,如果一个结点的分叉数目大于等于2,则将它与父节点断开,并且断开子结点数目sum - 2条边,并再次连接sum-2个儿子形成一条直链然后这条游离链与另一条游离链相连,共需要2*(sum-1)个操作,如果该结点为根结点,则一共需要2 * (sum - 2)种操作。
#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <vector>#include <queue>#include <stack>#pragma comment(linker,"/STACK:102400000,102400000")#define LL long long using namespace std;const int MAXN = 1000000 + 10;int ans;vector<int>G[MAXN];int n;int dfs(int u, int pre){int sz = G[u].size();int sum = 0;for(int i=0;i<sz;i++){int v = G[u][i];if(v == pre) continue;sum += dfs(v, u);}if(sum >= 2){if(u == 1) ans += 2 * (sum - 2);else ans += 2 * (sum - 1);return 0;}return 1;}int main(){int T;scanf("%d", &T);while(T--){scanf("%d", &n);for(int i=0;i<=n;i++) G[i].clear();ans = 0;int u, v;for(int i=1;i<n;i++){scanf("%d%d", &u, &v);G[u].push_back(v);G[v].push_back(u);}dfs(1, -1);printf("%d\n", ans + 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)
- 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
- hdu 4714 Tree2cycle(简单图或树DP,4级)
- 使用monit监控storm
- 关于mvp模式自己的一些见解
- cookie 和session 的区别详解
- Reveal 1.5.1,功能更强大,分析iOS App利器。
- 飞行熊猫游戏源码android版
- HDU 4714 Tree2cycle(树型DP)
- Mockito常用方法及示例
- Java Coding Standard
- NYOJ-710(贪心)-题目----------------------------------外星人的供给站
- TortoiseGit设置代理问题
- 9个非常有意思的HTML5动画推荐
- [算法导论学习心得]关于Insertion Sort
- 关于handler机制的一点见解
- 决策树模型组合之(在线)随机森林与GBDT