Pagini recente » Cod sursa (job #253765) | Cod sursa (job #1517324) | Cod sursa (job #1001919) | Cod sursa (job #329991) | Cod sursa (job #2174638)
#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;
}