update
This commit is contained in:
parent
c22aa52d7b
commit
f737de093d
62
src/P4186/P4186.cpp
Normal file
62
src/P4186/P4186.cpp
Normal file
@ -0,0 +1,62 @@
|
||||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
#include <limits>
|
||||
#include <vector>
|
||||
|
||||
using ll = int64_t;
|
||||
using std::cin, std::cout;
|
||||
|
||||
const ll maxn = 1e5+5;
|
||||
ll n, k, dpts[maxn], rds[maxn], ans;
|
||||
std::vector<ll> edgs[maxn];
|
||||
|
||||
void initdepth(const ll &fth, const ll &now){
|
||||
dpts[now]=dpts[fth]+1;
|
||||
for(const ll &nxt:edgs[now]){
|
||||
if(nxt==fth)continue;
|
||||
initdepth(now, nxt);
|
||||
}
|
||||
}
|
||||
|
||||
void initrd(const ll &fth, const ll &now){
|
||||
if(edgs[now].size()==1)rds[now]=1;
|
||||
for(const ll &nxt:edgs[now]){
|
||||
if(nxt==fth)continue;
|
||||
initrd(now, nxt);
|
||||
rds[now]=std::min(rds[now], rds[nxt]+1);
|
||||
}
|
||||
}
|
||||
|
||||
void dfs(const ll &fth, const ll &now){
|
||||
if(rds[now]<=dpts[now]){
|
||||
++ans;
|
||||
return;
|
||||
}
|
||||
if(edgs[now].size()==1){
|
||||
++ans;
|
||||
return;
|
||||
}
|
||||
for(const ll &nxt: edgs[now]){
|
||||
if(nxt==fth)continue;
|
||||
dfs(now, nxt);
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
std::iostream::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
|
||||
cin>>n>>k;
|
||||
std::fill(rds, rds+1+n, std::numeric_limits<unsigned int>::max());
|
||||
|
||||
for(ll i{1};i<n;i++){
|
||||
ll u, v;
|
||||
cin>>u>>v;
|
||||
edgs[u].push_back(v);
|
||||
edgs[v].push_back(u);
|
||||
}
|
||||
initdepth(0, k);
|
||||
initrd(0, k);
|
||||
dfs(0, k);
|
||||
cout<<ans<<'\n';
|
||||
}
|
Loading…
Reference in New Issue
Block a user