Pagini recente » Cod sursa (job #3361707) | Cod sursa (job #3360192) | Cod sursa (job #3361397) | Cod sursa (job #3360191) | Cod sursa (job #3361561)
#include <bits/stdc++.h>
using namespace std;
const int nmax=16000;
int dp[nmax+5];
int sz[nmax+5];
int n;
vector<int>L[nmax+5];
const int mod=30011;
int fr[nmax+5];
void dfs(int nod,int tata){
sz[nod]=1;
vector<int>fii;
for(auto x:L[nod]){
if(x!=tata){
fii.push_back(x);
dfs(x,nod);
sz[nod]+=sz[x];
}
}
dp[nod]=n-sz[nod];
for(int i=0;i<fii.size();i++)
{
dp[nod]=max(dp[nod], max(n-sz[nod],sz[fii[i]]));
}
}
int main(){
ifstream cin("sediu.in");
ofstream cout("sediu.out");
cin >> n;
for(int i=1;i<n;i++){
int a,b;
cin >> a >> b;
L[a].push_back(b);
L[b].push_back(a);
fr[b]=1;
}
int sol=1e9;
vector<int>rez;
for(int i=1;i<=n;i++){
if(dp[i]<sol){
sol=dp[i];
rez.clear();
rez.push_back(i);
}
else if(dp[i]==sol){
rez.push_back(i);
}
}
cout << sol<<' ' <<rez.size() <<'\n';
sort(rez.begin(),rez.end());
for(int i=0;i<rez.size();i++){
cout << rez[i] <<' ' ;
}
return 0;
}