Submission #486838

#TimeUsernameProblemLanguageResultExecution timeMemory
486838julian33Untitled (POI11_ins)C++14
0 / 100
1176 ms121816 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #define deb(...) logger(#__VA_ARGS__, __VA_ARGS__) template<typename ...Args> void logger(string vars, Args&&... values) { cerr<<vars<<" = "; string delim=""; (...,(cerr<<delim<<values,delim=", ")); cerr<<"\n"; } #else #define deb(...) logger(#__VA_ARGS__, __VA_ARGS__) template<typename ...Args> void logger(string vars, Args&&... values) {} #endif #define pb push_back #define sz(x) (int)(x.size()) typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; template<typename T> inline void maxa(T& a,T b){a=max(a,b);} template<typename T> inline void mina(T& a,T b){a=min(a,b);} mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int mxN=1e6+5; //make sure this is right const int mod=1e9+7; vector<int> graph[mxN]; ll sub[mxN],sub2[mxN],up[mxN],down[mxN],par[mxN],dp[mxN],dp2[mxN],mx[mxN]; void dfs(int at,int p){ sub[at]=1; for(int &i:graph[at]){ if(i==p) continue; par[i]=at; dfs(i,at); sub[at]+=sub[i]; dp[at]+=dp[i]+sub[i]; maxa(down[at],down[i]+1); maxa(mx[at],sub[i]); } } void dfs2(int at,int p){ vector<ll> all; for(int &i:graph[at]){ if(i==p) continue; all.pb(down[i]); } sort(all.rbegin(),all.rend()); for(int &i:graph[at]){ if(i==p) continue; up[i]=up[at]+1; if(all[0]!=down[i]) maxa(up[i],all[0]+2); else if(sz(all)>1) maxa(up[i],all[1]+2); dp2[i]=dp2[at]+sub2[at]+dp[at]-dp[i]+sub[at]-2*sub[i]; sub2[i]=sub[at]-sub[i]+sub2[at]; dfs2(i,at); } } int main(){ cin.sync_with_stdio(0); cin.tie(0); cout.tie(0); #ifdef LOCAL freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #endif int n; cin>>n; for(int i=1;i<n;i++){ int a,b; cin>>a>>b; graph[a].pb(b); graph[b].pb(a); } dfs(1,-1); dfs2(1,-1); for(int i=1;i<=n;i++){ ll rem=n-sub[i]; if(2*max(rem,mx[i])>n) cout<<-1<<"\n"; else cout<<2*(dp[i]+dp2[i])-max(up[i],down[i])<<"\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...