Submission #1137017

#TimeUsernameProblemLanguageResultExecution timeMemory
1137017agussTriumphal arch (POI13_luk)C++20
100 / 100
994 ms22424 KiB
#include <bits/stdc++.h> #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define raya() cout << endl << "====================================" << endl #define dbg(x) cerr << #x << ": " << x << endl; using namespace std; using ll = long long; const ll MOD = 1e9 + 7; const ll INF = 1e18 + 5; vector<vector<int>> arr; vector<bool> vis; ll dfs(int currnode, int mid){ ll diff = mid; for(int i : arr[currnode]){ if(vis[i]){ continue; } vis[i] = 1; diff += dfs(i, mid) - 1; } return min(0ll, diff); } void solve(){ int n; cin >> n; arr.assign(n, vector<int>(0)); vis.assign(n, 0); for(int i = 0; i < n - 1; i++){ int a, b; cin >> a >> b; a--; b--; arr[a].push_back(b); arr[b].push_back(a); } ll l = 0, r = MOD, ans = 0; while(l <= r){ int m = l + (r - l) / 2; vis.assign(n, 0); vis[0] = 1; if(dfs(0, m) == 0){ ans = m; r = m - 1; continue; } l = m + 1; } cout << ans; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
#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...