Submission #1143741

#TimeUsernameProblemLanguageResultExecution timeMemory
1143741calisovraduTriumphal arch (POI13_luk)C++20
20 / 100
204 ms25880 KiB
#include <bits/stdc++.h>
using namespace std;
    vector<vector<long long>> v;
    vector<long long> depth;
    vector<long long> dp;
long long n,maxim=0;
bool verif(long long crews){
    long long last=crews;
    for(int i=1;i<maxim;i++){
        last-=dp[i];
        if(last<0)
        return false;
        last+=crews;
    }
    return true;
}
int main() {
    cin>>n;
    v.resize(n+1);
    depth.resize(n+1);
    dp.resize(n+1);
    for(int i=1;i<=n-1;i++){
        long long a,b;
        cin>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    depth[1]=1;
    
    queue<long long> q;
    q.push(1);
    while(!q.empty()){
    long long nod = q.front();
    long long conex=0;
    q.pop();

        for(int i=0;i<v[nod].size();i++){
            long long 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);
    }
    
    long long l=0,r=n;
    long long mij,corect=n;
    while(l<=r){
        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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...