Submission #1143569

#TimeUsernameProblemLanguageResultExecution timeMemory
1143569SonicMLTriumphal arch (POI13_luk)C++20
90 / 100
448 ms23928 KiB
#include <iostream> #include <vector> using namespace std; int const NMAX = 3e5; vector <int> g[1 + NMAX]; int DFS(int node, int parent, int crews) { int extraCrew = 0; for(int i = 0;i < g[node].size();i++) { int to = g[node][i]; if(to != parent) { extraCrew += DFS(to, node, crews) + 1; } } return max(extraCrew - crews, 0); } int cautbin(int from, int to) { if(from >= to) { return from; }else { int mid = (from + to) / 2; if(DFS(1, 1, mid) == 0) { return cautbin(from, mid); }else { return cautbin(mid+1, to); } } } int main() { int n; 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); } cout << cautbin(1, n) << '\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...