Cod sursa(job #1888846)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 22 februarie 2017 12:58:52
Problema Salvare Scor 0
Compilator cpp Status done
Runda becreative21 Marime 1.16 kb
#include <fstream>
#include <vecotr>
#define Nmax 1001
using namespace std;

ifstream f("salvare.in");
ofstream g("salvare.out");

int n,k,x[Nmax];
vector<int> V[Nmax];
vector<pair<int,int> > C;

bool weCan(int x)
{
    C.clear();
    memset(uz,0,sizeof(uz));
    for (int i=1;i<=n;i++)
    {
        if(V[i].size()==1)
        {
            C.push_back(make_pair(i,0));
            uz[i] = 1;
        }
    }
    nr = 0;
    for (int i=0;i<C.size();i++)
    {
        if (C[i].second == x)
        {
            nr++;
            x[nr] = C[i].first;
            C[i].second = -x;
        }
        for (int j=0;j<V[C[i].first].size();j++)
        {
            if (!uz[V[C[i].first][j])
            {
                uz[V[C[i].first][j] = 1;

            }
        }
    }
}

int main()
{
    f>>n>>k;
    for (int i=1;i<n;i++)
    {
        f>>x>>y;
        V[x].push_back(y);
        V[y].push_back(x);
    }

    int st=0,dr=n;

    while (st<=dr)
    {
        int mij = (st+dr)/2;
        if (weCan(mij))
            dr=mij-1;
        else
            st=mij+1;
    }

    g<<st;

    dfs(st);

    return 0;
}