Submission #715717

#TimeUsernameProblemLanguageResultExecution timeMemory
715717Koful123Papričice (COCI20_papricice)C++17
50 / 110
220 ms596 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define endl "\n" #define ff first #define ss second #define pb push_back #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() const int N = 2e3 + 5; int ans = 1e18,n; vector<int> adj[N],sz(N),cnt(N); void calc(int node,int p,int val){ cnt[node] = 1; for(int go : adj[node]){ if(go == p) continue; calc(go,node,val); cnt[node] += cnt[go]; } int cur = n - val; vector<int> tmp = {cnt[node],cur - cnt[node],val}; sort(tmp.begin(),tmp.end()); ans = min(ans,tmp[2] - tmp[0]); } void dfs(int node,int p){ sz[node] = 1; for(int go : adj[node]){ if(go == p) continue; dfs(go,node); sz[node] += sz[go]; } calc(p,node,sz[node]); } void solve(){ cin >> n; for(int i = 1; i < n; i++){ int a,b; cin >> a >> b; adj[a].push_back(b); adj[b].push_back(a); } dfs(1,0); cout << ans << endl; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); int t = 1; // cin >> t; while(t--) solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...