Pagini recente » Cod sursa (job #783048) | Cod sursa (job #228719) | Cod sursa (job #2169174) | Cod sursa (job #2361792) | Cod sursa (job #767072)
Cod sursa(job #767072)
#include<fstream>
#include<cstring>
#include<vector>
#define pb push_back
#define INF 0x3f3f3f3f
#define NN 1001
using namespace std;
ofstream out("salvare.out");
typedef vector<int>:: iterator IT;
vector<int>sol;
vector<int>G[NN];
int d[NN],uz[NN],n,k,a[NN][NN];
void read();
void DFS(int );
void solve();
int main()
{
read();
solve();
int poz=-1,mm=INF;;
memset(uz,0,sizeof(uz));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j] < mm && a[i][j] )
{
mm=a[i][j];
poz=i;
}
uz[poz]=1;
sol.pb(poz);
for(int j=1;j<=n;j++)
if(a[1][j] ==1 && !uz[j] )
uz[j]=1;
for(int i=2;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j] == 1 && !uz[j] )
{
sol.pb(i);
uz[j]=1;
}
out<<mm<<'\n';
for(IT I=sol.begin();I!=sol.end();++I)
out<<*I<<" ";
return 0;
}
void read()
{
ifstream in("salvare.in");
in>>n;
in>>k;
for(int x,y,i=1;i<n;i++)
{
in>>x>>y;
G[x].pb(y);
G[y].pb(x);
}
}
void DFS(int start)
{
uz[start]=1;
for(IT I=G[start].begin();I!=G[start].end();++I)
if(!uz[*I])
{
d[*I]=d[start]+1;
DFS(*I);
}
}
void solve()
{
for(int i=1;i<=n;i++)
{
int k=0;
memset(uz,0,sizeof(uz));
memset(d,INF,sizeof(d));
d[i]=0;
DFS(i);
for(int j=1;j<=n;j++)
a[i][++k]=d[j];
}
}