Submission #1143403

#TimeUsernameProblemLanguageResultExecution timeMemory
1143403calisovraduTriumphal arch (POI13_luk)C++20
20 / 100
163 ms19676 KiB
#include <bits/stdc++.h> using namespace std; vector<vector<int>> v; vector<int> depth; vector<int> dp; int n,maxim=0; bool verif(int crews){ int 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++){ 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=1,r=n,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...