Pagini recente » Cod sursa (job #1241131) | Cod sursa (job #1053689) | Cod sursa (job #3323990) | Cod sursa (job #2783771) | Cod sursa (job #3326805)
#include <bits/stdc++.h>
using namespace std;
int n,d,rad,x,y,cnt;
vector<int> v[16005];
int vis[16005];
int sub[16005],sediu[16005];
int opus;
void dfs(int node)
{
vis[node]=1;
for(int i=0;i<v[node].size();i++)
{
int vecin=v[node][i];
if(vis[vecin]==0)
{
vis[vecin]=1;
dfs(vecin);
sub[node]+=sub[vecin];
opus=max(opus,sub[vecin]);
}
}
sediu[node]=max(opus,n-sub[node]);
}
int main() {
ifstream cin("sediu.in");
ofstream cout("sediu.out");
cin>>n;
for(int i=1;i<n;i++)
{
cin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
for (int i = 1; i <= n; i++)
sub[i] = 1;
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
dfs(i);
}
int mini=1e9;
for(int i=1;i<=n;i++)
mini=min(mini,sediu[i]);
for(int i=1;i<=n;i++)
if(sediu[i]==mini)
cnt++;
cout<<mini<<' '<<cnt<<'\n';
for(int i=1;i<=n;i++)
if(sediu[i]==mini)
cout<<i<<' ';
}