PKU 1655 Balancing Act(树+树的重心)
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 20005
using namespace std;
struct Edge
{
int to;
int next;
}e[*maxn];
int t,n,x,y,tot;
int head[maxn],num[maxn],balance[maxn]; void Init()
{
tot=;
memset(head,-,sizeof(head));
}
void Addedge(int u,int v)
{
e[tot].to=v;
e[tot].next=head[u];
head[u]=tot++;
}
void dfs(int u,int pre)
{
balance[u]=,num[u]=;
for(int i=head[u];i!=-;i=e[i].next){
int v=e[i].to;
if(v==pre)
continue ;
dfs(v,u);
balance[u]=max(balance[u],num[v]);
num[u]+=num[v];
}
balance[u]=max(balance[u],n-num[u]);
}
int main()
{
scanf("%d",&t);
while(t--){
scanf("%d",&n);
Init();
for(int i=;i<n;i++){
scanf("%d%d",&x,&y);
Addedge(x,y);
Addedge(y,x);
}
dfs(,-);
int pos=,ans=balance[];
for(int i=;i<=n;i++){
if(balance[i]<ans){
pos=i;
ans=balance[i];
}
}
printf("%d %d\n",pos,ans);
}
}
PKU 1655 Balancing Act(树+树的重心)的更多相关文章
- poj 1655 Balancing Act 求树的重心【树形dp】
poj 1655 Balancing Act 题意:求树的重心且编号数最小 一棵树的重心是指一个结点u,去掉它后剩下的子树结点数最少. (图片来源: PatrickZhou 感谢博主) 看上面的图就好 ...
- POJ 1655 Balancing Act【树的重心】
Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14251 Accepted: 6027 De ...
- POJ 1655 - Balancing Act - [DFS][树的重心]
链接:http://poj.org/problem?id=1655 Time Limit: 1000MS Memory Limit: 65536K Description Consider a tre ...
- POJ 1655 Balancing Act【树的重心模板题】
传送门:http://poj.org/problem?id=1655 题意:有T组数据,求出每组数据所构成的树的重心,输出这个树的重心的编号,并且输出重心删除后得到的最大子树的节点个数,如果个数相同, ...
- POJ 1655 Balancing Act(求树的重心--树形DP)
题意:求树的重心的编号以及重心删除后得到的最大子树的节点个数size,假设size同样就选取编号最小的. 思路:随便选一个点把无根图转化成有根图.dfs一遍就可以dp出答案 //1348K 125MS ...
- POJ 1655 Balancing Act (树的重心,常规)
题意:求树的重心,若有多个重心,则输出编号较小者,及其子树中节点最多的数量. 思路: 树的重心:指的是一个点v,在删除点v后,其子树的节点数分别为:u1,u2....,设max(u)为其中的最大值,点 ...
- POJ 1655 Balancing Act ( 树的重心板子题,链式前向星建图)
题意: 给你一个由n个节点n-1条边构成的一棵树,你需要输出树的重心是那个节点,以及重心删除后得到的最大子树的节点个数size,如果size相同就选取编号最小的 题解: 树的重心定义:找到一个点,其所 ...
- POJ 1655 Balancing Act (求树的重心)【树形DP】(经典)
<题目链接> 题目大意:给你一棵树,任意去除某一个点后,树被分成了几个联通块,则该点的平衡值为所有分成的连通块中,点数最大的那个,问你:该树所有点中,平衡值最小的那个点是什么? 解题分析: ...
- POJ 1655 Balancing Act 焦点树
标题效果:鉴于一棵树.除去一个点之后,这棵树将成为一些中国联通的块.之后该点通过寻求取消最低形成块的最大数目. 思维:树DP思维.通过为每个子树尺寸的根节点深搜索确定.之后该节点然后除去,,还有剩下的 ...
随机推荐
- Python 资料性网站。
伯乐在线:http://blog.jobbole.com/category/python/ http://blog.chinaunix.net/uid/22334392/cid-24327-list- ...
- db2 improt from coldel0x7c
db2 load from "C:\20110816\20110816_BankEnterpri seCA.txt" OF del modified by coldel0x7c r ...
- Linux系统下修改MySQL密码(忘记密码)
忘记原来的myql的root的密码: 首先,你必须要有操作系统的root权限了.要是连系统的root权限都没有的话,先考虑root系统再走下面的步骤.类似于安全模式登录系统,有人建议说是pkill m ...
- 如何使用github,简单教程
前期准备:先行设置SSH KEY(请看我之前发的关于设置添加SSH的文章) 直接上命令: clone 已有仓库到身边的开发环境中 git clone git@github.com:<yourna ...
- Qt 等待一段时间例如1s
QTime dieTime = QTime::currentTime().addMSecs(1000); while( QTime::currentTime() < dieTime ) QCor ...
- UE4与Visual Studio版本对应关系
首先,要注意,Visual Studio 2015(VS2015)默认安装时并不包含 C++ 的工具.在安装 VS2015 时,需选择 自定义 安装并勾选 C++ 组件,这对之后的工作时必须的.如果已 ...
- iOS UILabel两侧加阴影
- (void)viewDidLoad { [super viewDidLoad]; [self.view setBackgroundColor:[UIColor grayColor]]; // Do ...
- nginx基本配置与参数说明以及Nginx中的upstream轮询机制介绍
转自:http://blog.csdn.net/happydream_c/article/details/54943802 一.nginx简介 Nginx (发音为[engine x])专为性能优化而 ...
- Oracle的启动与关闭
启动数据库的前提条件: 环境变量定义好($ORACLE_HOME,$ORACLE_SID,$PATH) 能密码文件认证或OS认证(确保能登入sys) 有正确的参数文件(启动数据库需要查找参数文件,默认 ...
- iass,pass,cass,sass,vm,container
分布式存储hdfs 大文件,swift 对象存贮. 为七牛的CDN系统目前大部分还不是自建的,采用的是整合其它CDN的方式做的.也就是说出了七牛的文件分发使用的是网宿和蓝汛的老牌CDN的分发节点,自身 ...