Submission #1166264

#TimeUsernameProblemLanguageResultExecution timeMemory
1166264MateiKing80Triumphal arch (POI13_luk)C++20
90 / 100
500 ms31208 KiB
#include <bits/stdc++.h> using namespace std; const int N = 5e5 + 5; vector<int> vec[N]; int dp[N], n; void dfs(int nod, int papa, int nrE) { int sumfii = 0; for (auto i : vec[nod]) if (i != papa) dfs(i, nod, nrE), sumfii += dp[i]; dp[nod] = max(1, sumfii - nrE + 1); } bool doDp(int nrE) { for (int i = 1; i <= n; i ++) dp[i] = 0; dfs(1, 0, nrE); return dp[1] == 1; } int main() { cin >> n; for (int i = 1; i < n; i ++) { int u, v; cin >> u >> v; vec[u].push_back(v); vec[v].push_back(u); } int pos = 0; for (int pas = 1 << 20; pas; pas >>= 1) if (!doDp(pos + pas)) pos += pas; cout << pos + 1 << '\n'; }
#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...