Pagini recente » Cod sursa (job #1858222) | Cod sursa (job #2669552) | Cod sursa (job #10519) | Cod sursa (job #256249) | Cod sursa (job #2372938)
#include <bits/stdc++.h>
using namespace std;
#define NMAX 10010
int cnt[NMAX],t[NMAX],viz[NMAX],da[NMAX];
vector<int>v[NMAX];
priority_queue<pair<int,int>, vector<pair<int,int> >, greater<pair<int,int> > >h;
int main()
{
int n,k,i,x,y,nr,r,o,total=0;
freopen("cezar.in","r",stdin);
freopen("cezar.out","w",stdout);
scanf("%d%d",&n,&k);
for (i=1;i<n;i++){
scanf("%d%d",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
cnt[x]++;
cnt[y]++;
}
for (i=1;i<=n;i++){
t[i]=cnt[i];
if (cnt[i]==1) {h.push(make_pair(1,i));cnt[i]--;da[i]=1;}
}
r=n-k-1;
while (!h.empty()&&r>0){
x=h.top().second;
nr=v[x].size();
total+=da[x];
for (i=0;i<nr;i++)
if (cnt[v[x][i]]>0){
cnt[v[x][i]]--;
da[v[x][i]]+=da[x];
if (cnt[v[x][i]]==1){
cnt[v[x][i]]--;
da[v[x][i]]++;
h.push(make_pair(t[v[x][i]],v[x][i]));
}
}
h.pop();
r--;
}
printf("%d",total);
return 0;
}