poj3107 树形dp
好久没更了。前段时间去ec-final,实力水一波,混了个铜,虽然很弱,但是可以算是对之前一段时间的回报吧。
现在每天忙着复习,逃课太多,啥都不会。。。不想挂科啊!!Orz...
题意(简化):警察想抓捕黑手党老大。现在警察们认为黑手党内部是树形结构,每个人看做节点。删除一个节点,这棵树就分为几个连同分量。现在对于每个节点,删去后得到的连同分量的最大值为t。t的值最小的是哪些人,都输出。
解法:对于节点,他的最大连同分量只可能来自2方面,他的孩子方向或者他的父亲方向。只要判断一下大小即可。
#include<cstdio>
#include<cstring>
#include<vector>
#include<iostream>
using namespace std;
const int MAXN = ;
struct node{
int to;
int next;
}edge[MAXN*];
int index,vis[MAXN],pre[MAXN],n;
int num[MAXN],dp[MAXN],way[MAXN],ans[MAXN];
void add(int x,int y)
{
edge[index].to = y;
edge[index].next = pre[x];
pre[x] = index++;
}
void dfs1(int rt)
{
vis[rt] = ;
int i;
for(i=pre[rt]; i!=-; i=edge[i].next){
int v = edge[i].to;
if(!vis[v]){
dfs1(v);
if(dp[rt] < num[v]){
dp[rt] = num[v];
way[rt] = v;
}
num[rt] += num[v];
}
}
num[rt] += ;
}
void dfs2(int rt,int pa)
{
vis[rt] = ;
int i;
if(pa == -){
for(i=pre[rt]; i!=-; i=edge[i].next){
int v = edge[i].to;
if(!vis[v]){
ans[rt] =max(ans[rt], num[v]);
dfs2(v,rt);
}
}
}
else {
ans[rt] = n - num[rt];
for(i=pre[rt]; i!=-; i=edge[i].next){
int v = edge[i].to;
if(!vis[v]){
ans[rt] = max(ans[rt], dp[rt]);
dfs2(v,rt);
}
}
}
}
int main()
{
int i,j;
while(~scanf("%d",&n))
{
index = ;
memset(pre,-,sizeof(pre));
for(i=; i<n; i++){
int x,y;
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
memset(dp,,sizeof(dp));
memset(way,,sizeof(way));
memset(num,,sizeof(num));
memset(ans,,sizeof(ans));
memset(vis,,sizeof(vis));
dfs1();
memset(vis,,sizeof(vis));
dfs2(,-);
int v = ;
for(i=; i<=n; i++){
if(ans[i] != )
v = min(v,ans[i]);
}
int flag = ;
for(i=; i<=n; i++){
if(v == ans[i])
{
if(!flag){
printf("%d",i);
flag = ;
}
else printf(" %d",i);
}
}
cout<<endl;
}
}
poj3107 树形dp的更多相关文章
- poj3107(树的重心,树形dp)
题目链接:https://vjudge.net/problem/POJ-3107 题意:求树的可能的重心,升序输出. 思路:因为学树形dp之前学过点分治了,而点分治的前提是求树的重心,所以这题就简单水 ...
- [poj3107/poj2378]Godfather/Tree Cutting树形dp
题意:求树的重心(删除该点后子树最大的最小) 解题关键:想树的结构,删去某个点后只剩下它的子树和原树-此树所形成的数,然后第一次dp求每个子树的节点个数,第二次dp求解答案即可. 此题一开始一直T,后 ...
- 树形dp专辑
hdu 2196 http://acm.hdu.edu.cn/showproblem.php?pid=2196 input 5//5个结点 1 1//表示结点2到结点1有一条权值为1的边 2 1//表 ...
- 树形DP小结
树形DP1.简介:树是一种数据结构,因为树具有良好的子结构,而恰好DP是从最优子问题更新而来,那么在树上做DP操作就是从树的根节点开始深搜(也就是记忆化搜索),保存每一步的最优结果.tips:树的遍历 ...
- 树形 DP 总结
树形 DP 总结 本文转自:http://blog.csdn.net/angon823/article/details/52334548 介绍 1.什么是树型动态规划 顾名思义,树型动态规划就是在“树 ...
- poj3417 LCA + 树形dp
Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4478 Accepted: 1292 Descripti ...
- COGS 2532. [HZOI 2016]树之美 树形dp
可以发现这道题的数据范围有些奇怪,为毛n辣么大,而k只有10 我们从树形dp的角度来考虑这个问题. 如果我们设f[x][k]表示与x距离为k的点的数量,那么我们可以O(1)回答一个询问 可是这样的话d ...
- 【BZOJ-4726】Sabota? 树形DP
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 128 Solved ...
- 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)
题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...
随机推荐
- testng环境设置
1.在eclipse中安装testng插件,地址:http://beust.com/eclipse 2.设置testng环境变量 testng_home D:\Program Files\eclips ...
- 利用OpenCV检测图像中的长方形画布或纸张并提取图像内容
基于知乎上的一个答案.问题如下: 也就是在一张照片里,已知有个长方形的物体,但是经过了透视投影,已经不再是规则的长方形,那么如何提取这个图形里的内容呢?这是个很常见的场景,比如在博物馆里看到一幅很喜欢 ...
- POJ 1556 The Doors --几何,最短路
题意: 给一个正方形,从左边界的中点走到右边界的中点,中间有一些墙,问最短的距离是多少. 解法: 将起点,终点和所有墙的接触到空地的点存下来,然后两两之间如果没有线段(墙)阻隔,就建边,最后跑一个最短 ...
- Mango DS Training #48 ---线段树2 解题手记
Training address: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=38966#overview A.Count Color ...
- Java虚拟机详解01----初识JVM
主要内容如下: JVM的概念 JVM发展历史 JVM种类 Java语言规范 JVM规范 一.JVM的概念: JVM: Java Virtual Machine,意为Java虚拟机. 虚拟机: 指通过软 ...
- Unity3D多人协作开发环境搭建
多人协作 说到多人协作开发,大家都会想到要使用版本控制工具来管理项目,当然最常用的要数SVN和Git了,但是SVN管理Unity3D项目的确有一些不尽人意的地方. 比如:两个人修改了同一个场景,SVN ...
- 【java基础】 如何导入外部jar包
转:from http://www.zhihu.com/question/20311561 有两种常用的方法. 1. 以外部包(External Archives)的形式导入. 在默认位于 Eclip ...
- http协议详解<一>
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://7826443.blog.51cto.com/7816443/1729227 写在 ...
- 2666 Accept Ratio(打表AC)
2666 Accept Ratio 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 某陈痴迷 ...
- POJ 1088滑雪
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 89168 Accepted: 33474 Description ...