Pagini recente » Cod sursa (job #469931) | Cod sursa (job #3287864) | Cod sursa (job #2504013) | Cod sursa (job #287512) | Cod sursa (job #2155243)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("sediu.in");
ofstream out("sediu.out");
vector <int> a[16001];
int nrd[16001], scor[16001], n, mi=16001, sol[16001];
bool m[16001];
void dfs (int x)
{
nrd[x]=1;
m[x]=true;
int y;
for (int i=0; i<a[x].size(); i++)
{
y=a[x][i];
if (!m[y])
{
dfs(y);
nrd[x]+=nrd[y];
scor[x]=max(scor[x], nrd[y]);
}
}
scor[x]=max(scor[x], n-nrd[x]);
}
int main()
{
in>>n;
int x, y;
for (int i=1; i<n; i++)
{
in>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
dfs(1);
int c;
for (int i=1; i<=n; i++)
{
if (mi>scor[i])
{
c=0;
sol[c]=i;
c++;
mi=scor[i];
}
else
if (mi==scor[i])
{
sol[c]=i;
c++;
}
}
out<<mi<<" ";
out<<c<<"\n";
for (int i=0; i<c; i++)
out<<sol[i]<<" ";
return 0;
}