제출 #1143286

#제출 시각아이디문제언어결과실행 시간메모리
1143286SonicML새로운 문제 (POI13_luk)C++20
30 / 100
196 ms21580 KiB
#include <iostream> #include <vector> using namespace std; typedef long long ll; int n; int const NMAX = 3e5; vector <ll> g[1 + NMAX]; ll depth[1 + NMAX]; ll ans = 0; ll cautbin(ll from, ll to, ll target, ll mult) { if(from >= to) { return from; }else { ll mid = (from + to) / 2; if(1LL * mid * mult >= target) { return cautbin(from, mid, target, mult); }else { return cautbin(mid+1, to, target, mult); } } } void DFS(ll node, ll parent, ll arc, ll builder) { depth[node] = depth[parent]+1; for(ll i = 0;i < g[node].size();i++) { ll to = g[node][i]; if(to != parent) { arc++; } } ll adder = cautbin(builder, n, arc, depth[node]); builder = max(builder, adder); ans = max(ans, builder); for(ll i = 0;i < g[node].size();i++) { ll to = g[node][i]; if(to != parent) { DFS(to, node, arc, builder); } } } int main() { cin >> n; for(ll i = 1;i < n;i++) { ll 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...