Submission #1143284

#TimeUsernameProblemLanguageResultExecution timeMemory
1143284adimiclaus15Triumphal arch (POI13_luk)C++20
0 / 100
169 ms18424 KiB
#pragma GCC optimize("O3,unroll-loops")
#include <bits/stdc++.h>

using namespace std;
const int NMAX = 3e5;
vector<int>G[NMAX+5];
int viz[NMAX+5];
int cntniv[NMAX+5];
void DFS(int nod,int niv){
    viz[nod]=1;cntniv[niv]++;
    for(int i=0;i<G[nod].size();i++){
        if(viz[G[nod][i]]==0){
            DFS(G[nod][i],niv+1);
        }
    }
}
int main()
{
    int n,a,b;cin>>n;
    for(int i=1;i<n;i++){
        cin>>a>>b;
        G[a].push_back(b);G[b].push_back(a);
    }
    if(n==1){cout<<"0"<<'\n';return 0;}
    DFS(1,1);
    int st=0,dr=n,mij,val=0;
    while(dr>=st){
        mij=(st+dr)/2;
        int sum=0,nrpus=0,ok=0;
        for(int i=2;i<=n;i++){
            sum+=cntniv[i];nrpus+=mij;
            if(sum>nrpus){ok=1;break;}
        }
        if(ok==0){
            val=mij;dr=mij-1;
        }
        else{st=mij+1;}
    }
    cout<<val<<'\n';
    return 0;
}
#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...