Cod sursa(job #2099583)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 4 ianuarie 2018 15:17:48
Problema Salvare Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
ifstream f ("salvare.in");
ofstream g ("salvare.out");
const int nmax=1e3+3;
int n,k,a,b,val[nmax],m,pa[nmax],ta,rau,nod,act[nmax],ok,st,dr,usu,sol[nmax],fz[nmax],nfz,grad[nmax],pup;
bool viz[nmax];
vector <int> v[nmax];
queue <int> q;
void alb(int nod,int ds,int ant)
{
    if(ds%2) sol[++nfz]=nod;
    for(int i=0;i<v[nod].size();++i)
    {
        if(v[nod][i]!=ant)
        {
            alb(v[nod][i],ds+1,nod);
        }
    }
}
int main()
{
    f>>n>>k;
    for(int i=1;i<n;++i)
    {
        f>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    if(n<=k)
    {
        g<<0<<'\n';
        for(int i=1;i<=n;++i) g<<i<<' ';
    }
    if(k>=n/2)
    {
        alb(1,1,0);
        g<<k<<'\n';
        for(int i=1;i<=n&&nfz<k;++i)
        {
            ok=1;
            for(int j=1;j<=nfz&&ok;++j)
            {
                if(sol[j]==i) ok=0;
            }
            if(ok) sol[++nfz]=i;
        }
        sort(sol+1,sol+nfz+1);
        for(int i=1;i<=nfz;++i) g<<sol[i]<<' ';
    }
    return 0;
}