POJ 1655 Balancing Act 树的重心
来源:互联网 发布:linux控制面板 编辑:程序博客网 时间:2024/05/16 07:25
题目大意:给出一棵树,去掉一个点后,这棵树会变成一些联通的块。求去掉哪个点之后所形成的块的最大数目最小。
思路:树形DP的思路。通过一次深搜求出每个节点为根的子树的大小,然后去掉这个节点之后,这棵树就会变成这个节点的各个子树,还有剩下的部分,求一下这些块中数目的最大值,就是去掉这个点时的ans,然后更新总的ans。
这个题其实就是树的重心。
CODE:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define MAX 20010using namespace std;int cases;int points;int head[MAX],total;int next[MAX << 1],aim[MAX << 1];int p_ans,ans;inline void Initialize();inline void Add(int x,int y);int DFS(int x,int last);int main(){for(cin >> cases;cases; --cases) {scanf("%d",&points);Initialize();for(int x,y,i = 1;i < points; ++i) {scanf("%d%d",&x,&y);Add(x,y),Add(y,x);}DFS(1,0);printf("%d %d\n",p_ans,ans);}return 0;}inline void Initialize(){ans = 0x7f7f7f7f,total = 0;memset(head,0,sizeof(head));}inline void Add(int x,int y){next[++total] = head[x];aim[total] = y;head[x] = total;}int DFS(int x,int last){int max_size = 0,size = 1;for(int i = head[x];i;i = next[i]) {if(aim[i] == last)continue;int temp = DFS(aim[i],x);max_size = max(max_size,temp);size += temp;}max_size = max(max_size,points - size);if(max_size < ans)ans = max_size,p_ans = x;return size;}
0 0
- POJ 1655 Balancing Act【树的重心】
- poj 1655 Balancing Act 【树的重心】
- POJ-1655 Balancing Act 树的重心
- 【POJ】1655 Balancing Act 树的重心
- 【树的重心】 POJ 1655 Balancing Act
- POJ 1655 Balancing Act 树的重心
- 【POJ 1655】Balancing Act 【树的重心】
- POJ 1655 Balancing Act 树的重心
- poj 1655 Balancing Act(树的重心)
- POJ 1655 Balancing Act (树的重心)
- poj 1655 Balancing Act 【树的重心】
- 【树的重心】 POJ 1655 Balancing Act
- POJ 1655 Balancing Act 树的重心
- poj 1655 Balancing Act【树的重心】
- poj 1655 Balancing Act(求树的重心)
- poj 1655 Balancing Act(求树的重心)
- 树的重心学习小记 Poj 1655 Balancing Act
- POJ 1655 Balancing Act(求树的重心)
- Django安装失败:from setuptools import setup, find_packages ImportError: No module named setuptools
- jvm 几个参数及最大内存
- java中传输对象时候的问题
- 23个MySQL常用查询语句
- SQL
- POJ 1655 Balancing Act 树的重心
- sysfs与procfs
- 献给不会哄女人的男人
- C++:实现split分割字符串
- VS2010连接MySQL数据库(非ODBC方法)
- 一套房子究竟该值多少钱:成本定价是个梦
- 源代码管理工具TFS2013安装与使用
- WebLogic 的安装与配置(windows上)
- Devexpress多表头设计