最大子树最小的节点
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5;
int vis[maxn],Size[maxn];
void dfs(int x)
{
vis[x] = 1;
Size[x] = 1;
int max_part = 0;
for(int i = head[x]; i !=-1; i=edge[i].next)
{
int to = edge[i].to;
if(!vis[to])
dfs(to);
Size[x] +=Size[to];
max_part = max(max_part,Size[to]);
}
max_part = max(max_part,n-Size[x]);
if(max_part<ans)
{
ans = max_part;
pos = x;
}
}
int main()
{
cout << "Hello world!" << endl;
return 0;
}