POJ 1655 树的重心(树形 DP)
来源:互联网 发布:淘宝电脑主机便宜 编辑:程序博客网 时间:2024/06/03 22:43
题目
Balancing Act
题意
定义一个点的“平衡”值等于将这个点拆去后,形成的子树中节点数的最大值。求一棵树“平衡”值最小的点。
题解
这其实就是树的重心的概念,通过树形 dp 很容易解决。当去掉抹一点后,它下面的子树的节点个数通过 dfs 可以得到,它上面的子树的节点个数等于总节点个数减去它本身及其子节点的总节点数。
代码
#include <algorithm>#include <bitset>#include <cstring>#include <cstdio>#include <cmath>#include <cstdlib>#include <climits>#include <iostream>#include <list>#include <map>#include <queue>#include <set>#include <stack>#include <string>#include <vector>using namespace std;const int MAX = 20005;vector<int>G[MAX];int root,mx;int n;void init(int n) { for (int i = 1; i <= n; ++i) { G[i].clear(); } root = 0; mx = INT_MAX;}int dfs(int u, int fa) { int len = G[u].size(); int sum = 1; int mx1 = 0; for(int i=0;i<len;++i){ int v = G[u][i]; if(v != fa){ int temp = dfs(v,u); mx1= max(mx1, temp); sum += temp; } } mx1 = max(mx1, (n - sum)); if(mx1 < mx){ root = u; mx = mx1; } else if(mx1 == mx && u < root){ root = u; } return sum;}int main(){ int t; cin >> t; while(t--){ cin >> n; init(n); int u,v; for (int i = 0; i < n - 1; ++i) { scanf("%d %d",&u,&v); G[u].push_back(v); G[v].push_back(u); } dfs(1,0); cout << root << ' ' << mx << endl; } return 0;}
阅读全文
0 0
- POJ 1655 树的重心(树形 DP)
- 求树的重心 POJ 1655、POJ 3107 树形DP
- poj 1655 树形dp求取树的重心
- POJ 1655 Balancing Act(求树的重心--树形DP)
- POJ 1655 Balancing Act (树形dp 树的重心)
- poj-1655-Balancing Act 树形dp/树的重心
- poj 1655 Balancing Act 【树形DP 求树的重心】
- poj 1655 Balancing Act(树的重心,树形dp)
- POJ.1655 Balancing Act (树形DP 树的重心)
- Poj 1655(树的重心、树形DP、经典)
- poj 3107 Godfather(树形dp,树的重心)
- 树的重心(树形DP)
- Godfather (树形dp,树的重心)
- Godfather (树形dp + 树的重心)
- POJ.2378 Tree Cutting (树形DP 树的重心)
- POJ.3107 Godfather (树形DP 树的重心)
- poj 1655(树形DP 求解重心)
- (poj3107Godfather,树形dp,next数组)树的重心
- (17)spring boot的Actuator监控使用
- java 彩票走势图算法
- mac 下修改hosts文件并创建快捷方式
- spring @RunWith
- iOS语言本地化以及自动化
- POJ 1655 树的重心(树形 DP)
- 别急,我来为你普及智能服务机器人那些事......
- CentOS 7.3下Elasticsearch 2.4.1+Kibana 4.6.6+Logstash 2.4.1及插件安装配置
- Webpack(三)前端项目打包步骤
- UIDocumentInteractionController 的使用
- androidstudio打包流程
- 基于2440的Qt环境移植,且开发Qt跨平台程序
- NYOJ 658 字符串右移
- JDK分析工具&JVM垃圾回收