Submission #1143282

#TimeUsernameProblemLanguageResultExecution timeMemory
1143282SonicMLTriumphal arch (POI13_luk)C++20
30 / 100
187 ms18388 KiB
#include <iostream> #include <vector> using namespace std; int n; int const NMAX = 3e5; vector <int> g[1 + NMAX]; int depth[1 + NMAX]; int ans = 0; int cautbin(int from, int to, int target, int mult) { if(from >= to) { return from; }else { int mid = (from + to) / 2; if(mid * mult >= target) { return cautbin(from, mid, target, mult); }else { return cautbin(mid+1, to, target, mult); } } } void DFS(int node, int parent, int arc, int builder) { depth[node] = depth[parent]+1; for(int i = 0;i < g[node].size();i++) { int to = g[node][i]; if(to != parent) { arc++; } } int adder = cautbin(builder, n, arc, depth[node]); builder = max(builder, adder); ans = max(ans, builder); for(int i = 0;i < g[node].size();i++) { int to = g[node][i]; if(to != parent) { DFS(to, node, arc, builder); } } } int main() { cin >> n; for(int i = 1;i < n;i++) { int a, b; cin >> a >> b; g[a].push_back(b); g[b].push_back(a); } DFS(1, 1, 0, 0); cout << ans << '\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...