#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> v;
vector<int> depth;
vector<int> dp;
vector<bool> checked;
int n,maxim=0,crews;
bool ok=true;
void dfs(int left, int node){
deque <int> q;
left+=crews;
for(int i=0;i<v[node].size();i++){
int newnod = v[node][i];
if(checked[newnod]==false){
checked[newnod]=true;
q.push_back(newnod);
left--;
}
}
if(left<0)
ok = false;
else{
while(!q.empty()){
dfs(left,q.front());
q.pop_front();
}
}
}
bool verif(int mij){
ok = true;
crews=mij;
checked[1]=true;
dfs(0,1);
if(ok==true)
return true;
return false;
}
void fix(){
for(int i=1;i<=n;i++)
checked[i]=false;
}
int main() {
cin>>n;
v.resize(n+1);
depth.resize(n+1);
dp.resize(n+1);
checked.resize(n+1);
for(int i=1;i<=n-1;i++){
int a,b;
cin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
depth[1]=1;
queue<int> q;
q.push(1);
while(!q.empty()){
int nod = q.front(),conex=0;
q.pop();
for(int i=0;i<v[nod].size();i++){
int newnod = v[nod][i];
if(depth[newnod]==0){
depth[newnod]=depth[nod]+1;
maxim=max(maxim,depth[newnod]);
q.push(newnod);
conex++;
}
}
dp[depth[nod]]=max(dp[depth[nod]],conex);
}
int l=0,r=n,mij,corect=n;
while(l<=r){
fix();
mij=(l+r)/2;
bool res = verif(mij);
if(res==true){
corect=min(mij,corect);
r=mij-1;
}else
l=mij+1;
}
cout<<corect;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |