http://codeforces.com/contest/686/problem/D
这道题的题面很直接,就是求一树的中心。我们可以用两个dfs来解决掉。
首先一个树的重心的定义:以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半。
重心还有一个性质就是如果将子树的重心向上移动,总会移动到整个树的重心
第一个dfs先求出每个子树的大小和每个节点最大的子树大小,第二遍先求出来子树的重心,之后将最大的子树重心向上移,找到之后记录重心,查询的时候直接输出就行
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 3e5+5;
vector<