Pagini recente » Cod sursa (job #2838107) | Cod sursa (job #2678231) | Cod sursa (job #2250186) | Cod sursa (job #1705720) | Cod sursa (job #2716326)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fi("salvare.in");
ofstream fo("salvare.out");
int n;
int k;
vector <int>vec[1001];
vector <int>sol;
int mat[1001][1001];
int value[1001];
int viz[1001];
void DFS(int X,int x,int con)
{
mat[X][x]=con;
mat[X][0]+=con;
for(int i=0;i<=vec[x].size()-1;i++)
{
if(viz[vec[x][i]]==0)
{
viz[vec[x][i]]=1;
DFS(X,vec[x][i],con+1);
}
}
}
int main()
{
fi>>n>>k;
int x,y;
for(int i=1;i<=n-1;i++)
{
fi>>x>>y;
vec[x].push_back(y);
vec[y].push_back(x);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
viz[j]=0;
viz[i]=1;
DFS(i,i,0);
}
while(k!=0)
{
int mini=100000;
int ind;
for(int i=1;i<=n;i++)
{
if(mini>mat[i][0])
{
mini=mat[i][0];
ind=i;
}
}
sol.push_back(ind);
mat[ind][0]=1000000;
k--;
}
int rez[1001];
for(int i=1;i<=n;i++)
rez[i]=100000;
for(int i=0;i<=sol.size()-1;i++)
{
mat[sol[i]][sol[i]]=0;
for(int j=1;j<=n;j++)
{
rez[j]=min(rez[j],mat[sol[i]][j]);
}
}
int mx=0;
for(int i=1;i<=n;i++)
mx=max(mx,rez[i]);
fo<<mx<<endl;
for(int i=0;i<=sol.size()-1;i++)
fo<<sol[i]<<" ";
return 0;
}