Submission #1014143

#TimeUsernameProblemLanguageResultExecution timeMemory
1014143vjudge1Triumphal arch (POI13_luk)C++17
90 / 100
229 ms27732 KiB
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define int long long
int n,dp[300001],k;
vector <int> v[300001]; 
int dfs(int i,int last){
    int sum=0;
    for(int j:v[i]) if(j!=last) sum+=dfs(j,i)+1;
    return max(0ll,sum-k);
}
int calc(int num){
    k=num;
    if(dfs(1,0)==0) return 1;
    else return 0;
}
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>n;
    for(int i=0;i<n-1;i++){
        int a,b;
        cin>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    int l=1,r=n,ans=1e9;
    while(l<=r){
        int mid=(l+r)/2;
        if(calc(mid)==1){
            ans=mid;
            r=mid-1;
        }
        else l=mid+1;
    }
    cout<<ans<<endl;
    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...