Cod sursa(job #2174638)

Utilizator cicero23catalin viorel cicero23 Data 16 martie 2018 12:49:14
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#include <queue>
#define mp make_pair
#define s second
#define f first
using namespace std;
ifstream f("statiuni.in");
ofstream g("statiuni.out");
vector <int> v[100001];
int t[100001],k;
int viz[100001];
int ceva[100001];
queue <pair<int,pair<int,int> > >q;
void bf()
{
    int i,nod,c,cost;
    while(!q.empty())
    {
        nod=q.front().s.f;
        c=q.front().s.s;
        cost=q.front().f;
        ceva[nod]++;
        q.pop();
        if(cost<k)
            for(i=0;i<v[nod].size();i++)
              if(ceva[v[nod][i]]<2&&v[nod][i]!=c)
                q.push(mp(cost+1,mp(v[nod][i],nod)));
    }

}
int main()
{
    int rez=0,n,i,x,y,j;
    f>>n>>k;
    for(i=1; i<n; i++)
    {
        f>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
        t[y]=x;
    }
    for(i=1; i<=n; i++)
        if(v[i].size()==1)
        {
            q.push(mp(0,mp(i,i)));
        }
        bf();
    for(i=1; i<=n; i++)
    {
            //if(v[i].size()!=1||t[i]==0)
            if(ceva[i]>=2) rez++;
    }
    g<<rez;
    return 0;
}