Submission #1011882

#TimeUsernameProblemLanguageResultExecution timeMemory
1011882DedibeatPapričice (COCI20_papricice)C++17
15 / 110
9 ms1116 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long const int N = 2e3 + 5; vector<int> adj[N + 5]; vector<int> child[N+5]; int sz[N + 5]; void dfs(int v, int last){ sz[v] = 1; child[v].push_back(v); for(auto u : adj[v]){ if(u != last) dfs(u , v); } for(auto u : adj[v]){ if(u == last) continue; sz[v] += sz[u]; for(auto it : child[u]){ child[v].push_back(it); } } } int main(){ int n; cin >> n; for(int i = 1; i<n; i++){ int x, y; cin >> x >> y; adj[x].push_back(y); adj[y].push_back(x); } dfs(1, 1); int ans = n; for(int i = 2; i<=n; i++){ // cout << sz[i] << endl; bool c[n+5]; for(int j = 0; j<=n; j++){ c[j] = false; } for(auto u : child[i]) c[u] = true; int A, B, C; for(int j = 2; j<=n; j++){ if(c[j]) C = sz[j], B = sz[i] - sz[j], A = n - sz[i]; else C = sz[j], B = sz[i], A = n - sz[i] - sz[j]; ans = min(ans, max(abs(A - B), max(abs(A - C), abs(B - C)))); // cout << i << " " << j << " " << A << " " << B << " " << C << endl; } } cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...