题目链接

Godfather

Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 11238   Accepted: 3946

Description

Last years Chicago was full of gangster fights and strange murders. The chief of the police got really tired of all these crimes, and decided to arrest the mafia leaders.

Unfortunately, the structure of Chicago mafia is rather complicated. There are n persons known to be related to mafia. The police have traced their activity for some time, and know that some of them are communicating with each other. Based on the data collected, the chief of the police suggests that the mafia hierarchy can be represented as a tree. The head of the mafia, Godfather, is the root of the tree, and if some person is represented by a node in the tree, its direct subordinates are represented by the children of that node. For the purpose of conspiracy the gangsters only communicate with their direct subordinates and their direct master.

Unfortunately, though the police know gangsters’ communications, they do not know who is a master in any pair of communicating persons. Thus they only have an undirected tree of communications, and do not know who Godfather is.

Based on the idea that Godfather wants to have the most possible control over mafia, the chief of the police has made a suggestion that Godfather is such a person that after deleting it from the communications tree the size of the largest remaining connected component is as small as possible. Help the police to find all potential Godfathers and they will arrest them.

Input

The first line of the input file contains n — the number of persons suspected to belong to mafia (2 ≤ n ≤ 50 000). Let them be numbered from 1 to n.

The following n − 1 lines contain two integer numbers each. The pair aibi means that the gangster ai has communicated with the gangster bi. It is guaranteed that the gangsters’ communications form a tree.

Output

Print the numbers of all persons that are suspected to be Godfather. The numbers must be printed in the increasing order, separated by spaces.

Sample Input

6
1 2
2 3
2 5
3 4
3 6

Sample Output

2 3

求树的重心。就是去除这个点,留下的块中节点数最多的块,与去除其他节点相比,是最少的。

这根本不是树形dp吧。。。就一模拟。。。

不过事实证明,流输入输出优化后也没有scanf,printf快。

一个弱智错误还卡了我半天。。。

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cstring>
#define ms(a,b) memset(a,b,sizeof(a))
using namespace std;
const int N=5e4+10;
int h[N<<1],nx[N<<1],to[N<<1];
int ans[N],n,tot;
void add(int u,int v)
{to[++tot]=v;nx[tot]=h[u];h[u]=tot;
//  cout<<u<<' '<<to[tot]<<endl;
}
int dfs(int x,int fa)
{int sum=1;ans[x]=0;for(int i=h[x];i;i=nx[i]){int v=to[i];if(v==fa) continue;int t=dfs(v,x);
//      cout<<v<<' '<<t<<endl;ans[x]=max(ans[x],t);sum+=t;}ans[x]=max(ans[x],n-sum);return sum;
}
int main()
{
//  ios::sync_with_stdio(false);
//  cin.tie(0);
//  cout.tie(0);while(~scanf("%d",&n)){int x,y;ms(h,0);tot=0;for(int i=1;i<n;i++){scanf("%d%d",&x,&y);add(x,y);add(y,x);}dfs(1,0);int res=n;for(int i=1;i<=n;i++)res=min(ans[i],res);//这里的ans[i]写成了ans[x] for(int i=1;i<=n;i++)if(res==ans[i])printf("%d ",i);printf("\n");}
}

POJ3107Godfather相关推荐

  1. POJ3107Godfather找重心

    易水人去,明月如霜. Description Last years Chicago was full of gangster fights and strange murders. The chief ...

最新文章

  1. 数据结构(C语言版) 第 三 章 栈与队列 知识梳理 + 作业习题详解
  2. nn.Upsampling is deprecated. Use nn.functional.interpolate instead.
  3. python爬虫技术可以干什么-Python除了爬虫,还能干啥?
  4. spring源码分析之cache注解
  5. gmod的css模块放哪,gmod模式怎么更换?gmod模块安装步骤教程
  6. 敏捷软件开发读书笔记2
  7. 【安卓开发】AS神奇的报错:Cannot find AVD system path. Please define ANDROID_SDK_ROOT
  8. 【java】java getOrDefault 方法的一个坑,容易导致OOM
  9. 设计模式学习-简单工厂模式
  10. UI素材资源|Material风格的插图,有品位的素材
  11. ActiveMq工作笔记002---Centos7.3安装ActiveMq
  12. LeetCode—4.滑动窗口
  13. Atitit usrQBF2312 命名空间pkg 以及 api命名 spec规范
  14. 基于PSCAD输电线路潮流计算
  15. 查看CentOS系统配置情况命令
  16. XMind 8 Update 7 激活
  17. python3网络爬虫(堆糖网)
  18. Photoshop透明度网格颜色设置方法
  19. sublime 前端css 插件
  20. 计算机本地网络给手机使用吗,手机网络也能共享给电脑(台式or笔记本)使用吗?...

热门文章

  1. 使用easygui制作app
  2. maven打包二进制文件
  3. PC实现Win10/原生安卓双系统
  4. Hello,你好JAVA
  5. DAY10微信小程序项目开发技术总结
  6. 如何调换手机桌面位置_如何改变华为手机桌面三个方向按键的位置?
  7. Python_pygame库学习笔记(1):pygame的由来,特点以及模块简介
  8. 阿里妈妈内容营销团队并入优酷 向樊路远汇报
  9. CSS - Tooltip-arrow 绘制三角形
  10. 网络安全下用c语言写蠕虫病毒,神经网络在计算机网络安全管理中的应用