I - Balancing Act POJ - 1655
For example, consider the tree:
Deleting node 4 yields two trees whose member nodes are {5} and {1,2,3,6,7}. The larger of these two trees has five nodes, thus the balance of node 4 is five. Deleting node 1 yields a forest of three trees of equal size: {2,6}, {3,7}, and {4,5}. Each of these trees has two nodes, so the balance of node 1 is two.
For each input tree, calculate the node that has the minimum balance. If multiple nodes have equal balance, output the one with the lowest number.
Input
Output
Sample Input
1
7
2 6
1 2
1 4
4 5
3 7
3 1
Sample Output
1 2
树形DP,注意考虑n-sum[u]这个搜索方向的联通点集
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<sstream>
#include<algorithm>
#include<queue>
#include<deque>
#include<iomanip>
#include<vector>
#include<cmath>
#include<map>
#include<stack>
#include<set>
#include<fstream>
#include<memory>
#include<list>
#include<string>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
#define MAXN 200099
#define L 31
#define INF 1000000009
#define eps 0.00000001
#define sf(a) scanf("%d",&a)
/*
dp[i] 记录i点除去偶的最大点集点数
sum[i] 记录所有子节点数目
*/
struct edge
{
int to, next;
}E[MAXN];
int sum[MAXN], dp[MAXN], head[MAXN];
int t, n, cnt;
void addedge(int f,int t)
{
E[cnt].to = t;
E[cnt].next = head[f];
head[f] = cnt++;
}
void init()
{
memset(sum, , sizeof(sum));
memset(dp, , sizeof(dp));
memset(head, -, sizeof(head));
cnt = ;
}
void dfs(int u, int pre)
{
sum[u] = dp[u] = ;
for (int i = head[u]; i != -; i = E[i].next)
{
int v = E[i].to;
if (v == pre) continue;
dfs(v, u);
sum[u] += sum[v];
dp[u] = max(dp[u], sum[v]);
}
dp[u] = max(dp[u], n - sum[u]);
}
int main()
{
sf(t);
while (t--)
{
init();
sf(n);
for (int i = ; i < n - ; i++)
{
int a, b;
sf(a), sf(b);
addedge(a, b);
addedge(b, a);
}
dfs(, -);
int ans = INF, k = -;
for (int i = ; i <= n; i++)
{
if (dp[i] < ans)
{
k = i, ans = dp[i];
}
}
printf("%d %d\n", k, ans);
}
}
I - Balancing Act POJ - 1655的更多相关文章
- Balancing Act POJ - 1655 (树的重心)
Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. Deleting any node from the t ...
- POJ.1655 Balancing Act POJ.3107 Godfather(树的重心)
关于树的重心:百度百科 有关博客:http://blog.csdn.net/acdreamers/article/details/16905653 1.Balancing Act To POJ.165 ...
- POJ 1655 Balancing Act&&POJ 3107 Godfather(树的重心)
树的重心的定义是: 一个点的所有子树中节点数最大的子树节点数最小. 这句话可能说起来比较绕,但是其实想想他的字面意思也就是找到最平衡的那个点. POJ 1655 题目大意: 直接给你一棵树,让你求树的 ...
- POJ 1655 Balancing Act && POJ 3107 Godfather
题目大意: 根据题目的图很好理解意思,就是记录每一个点的balance,例如 i 的balance就是把 i 从这棵树中除去后得到的森林中含有结点数最多 的子树中的节点个数,然后找到所有节点中对应的b ...
- poj 1655 Balancing Act(找树的重心)
Balancing Act POJ - 1655 题意:给定一棵树,求树的重心的编号以及重心删除后得到的最大子树的节点个数size,如果size相同就选取编号最小的. /* 找树的重心可以用树形dp或 ...
- POJ 1655 Balancing Act【树的重心】
Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14251 Accepted: 6027 De ...
- POJ 1655.Balancing Act 树形dp 树的重心
Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14550 Accepted: 6173 De ...
- poj 1655 Balancing Act 求树的重心【树形dp】
poj 1655 Balancing Act 题意:求树的重心且编号数最小 一棵树的重心是指一个结点u,去掉它后剩下的子树结点数最少. (图片来源: PatrickZhou 感谢博主) 看上面的图就好 ...
- POJ 1655 Balancing Act 树的重心
Balancing Act Description Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. ...
随机推荐
- [BZOJ2330][SCOI2011]糖果 差分约束系统+最短路
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2330 类似于题目中这种含有不等式关系,我们可以建立差分约束系统来跑最长路或最短路. 对于一 ...
- 使用Kotlin,抛弃findViewById
有没有觉得Android的findViewById挺烦人的.使用Kotlin可以让你彻底抛弃这个烦恼 步骤1.在build.gradle(Module:app)中添加如下一句话 这个在老一点版本的An ...
- tomcat 启动失败 和闪退 和 启动成功却没有页面显示
1.解压版tomcat 将tomcat解压至英文目录下, 在系统环境变量里面配置 JAVA_HOME 和CATALINA_HOME (就是tomcat的安装目录) 在path中配置 %CATALINA ...
- 从Code::Blocks到Dev–C++,Dev-C++安装调试一条龙
关于单文件调试 Codeblocks只支持单文件编译,不支持单文件调试,只有整个工程才能调试,还有路径名里不能有中文和空格,很坑的!就因为这个弃用了. 去你的吧! 老子用别的了 谁支持单文件编译和调试 ...
- 新手写的一个DBCP工具类
package com.xx.questionnaire.util.dao; import java.io.IOException; import java.sql.Connection; impor ...
- expdp dblink
客户端创建dblik create public database link [link_name] connect to {username} identified by "{passwo ...
- 2.C# 输入一个整数,求质因数
C# 输入一个整数,求质因数 List<int> results = new List<int>(); int number = Int32.Parse(Console.Rea ...
- xingo的demo部署
1)安装go 2)安装git xingo默认使用google protobuf来进行序列化和反序列化操作,所以需要安装 go get github.com/golang/protobuf/proto ...
- python 3计算KL散度(KL Divergence)
KL DivergenceKL( Kullback–Leibler) Divergence中文译作KL散度,从信息论角度来讲,这个指标就是信息增益(Information Gain)或相对熵(Rela ...
- 诊断:ORA-00376 & ORA-01110
现象: Errors in file /path/of/diag/rdbms/prod/PROD/trace/PROD_ora_13447.trc: ORA-00376: 此时无法读取文件 61 OR ...