Submission #1143144

#TimeUsernameProblemLanguageResultExecution timeMemory
1143144GtudorTriumphal arch (POI13_luk)C++20
0 / 100
152 ms18484 KiB
#include <iostream> #include <vector> #define NMAX 300000 using namespace std; int dist[NMAX + 1], f[NMAX + 1]; vector<int>edge[NMAX + 1]; void dfs(int p, int nod) { for(auto vecin : edge[nod]) { if(vecin == p) continue; dist[vecin] = dist[nod] + 1; f[dist[vecin]]++; dfs(nod, vecin); } } int main() { int n, a, b, mx = 0, builduri = 0, st, dr, mij; cin>>n; for(int i = 1; i < n; i++) { cin>>a>>b; edge[a].push_back(b); edge[b].push_back(a); } dfs(0, 1); st = 0; dr = n; int last = 0; while(st <= dr) { mij = (st + dr) / 2; bool ok = 1; builduri = 0; for(int i = 0; i <= n; i++) { builduri -= f[i]; if(builduri < 0) { ok = 0; break; } builduri += mij; } if(ok) { last = mij; dr = mij - 1; } else { st = mij + 1; } } cout<<last; 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...