제출 #1143806

#제출 시각아이디문제언어결과실행 시간메모리
1143806adimiclaus15Triumphal arch (POI13_luk)C++17
100 / 100
508 ms25100 KiB
#include <bits/stdc++.h> using namespace std; const int NMAX = 3e5; int dp[NMAX + 1]; vector<int> G[NMAX + 1]; void dfs(int node, int p, int val) { dp[node] = 0; for(auto next : G[node]) { if(next != p) { dfs(next, node, val); dp[node] += dp[next] + 1; } } dp[node] = max(dp[node] - val, 0); } int main() { int n; cin >> n; if(n == 1) { cout << 0; return 0; } for(int i = 1; i < n; i++) { int a, b; cin >> a >> b; G[a].push_back(b); G[b].push_back(a); } int st = 1; int dr = n; int sol = 0; while(st <= dr) { int mid = (st + dr) / 2; dfs(1, 0, mid); if(dp[1] == 0) { sol = mid; dr = mid - 1; } else { st = mid + 1; } } cout << sol; 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...