Submission #1099519

#TimeUsernameProblemLanguageResultExecution timeMemory
1099519vjudge1Meetings 2 (JOI21_meetings2)C++17
100 / 100
570 ms24656 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define eb emplace_back #define pu push #define ins insert #define fi first #define se second #define bruh ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define fu(x,a,b) for (auto x=a;x<=b;x++) #define fd(x,a,b) for (auto x=a;x>=b;x--) #define int ll using namespace std; #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") //mt19937 mt(chrono::steady_clock::now().time_since_epoch().count()); typedef pair<int, int> ii; const int N = 2e5+5; const int mod = 998277353; const int inf = 1e18; using cd = complex<double>; const long double PI = acos(-1); int power(int a,int b) {ll x = 1;if (a >= mod) a%=mod; while (b) {if (b & 1) x = x*a % mod;a = a*a % mod;b>>=1;}return x;} int n; vector<int> adj[N]; int sz[N], ans[N], dist[N], mx[N], lst[N]; bool check[N]; void predfs(int u,int p) { sz[u] = 1; for (auto v : adj[u]) { if (v==p || check[v]) continue; predfs(v,u); sz[u] += sz[v]; } } int centroid(int u, int p, int n) { for (auto v : adj[u]) { if (check[v] || v==p) continue; if (sz[v] > n/2) return centroid(v,u,n); } return u; } void dfs1(int u,int p) { dist[u] = dist[p]+1; for (auto v : adj[u]) { if (v==p || check[v]) continue; dfs1(v,u); } mx[sz[u]] = max(mx[sz[u]],dist[u]); } void dfs(int u) { predfs(u,0); int ct = centroid(u,0,sz[u]); predfs(ct,0); dist[ct] = 1; int tot = 0; //cout<<ct<<endl; for (auto v : adj[ct]) { if (check[v]) continue; dfs1(v,ct); //cout<<v<<endl; tot = max(tot,sz[v]); for (int i=sz[v]-1;i>=0;i--) mx[i] = max(mx[i],mx[i+1]); // for (int i=0;i<=sz[v];i++) cout<<mx[i]<<" "; // cout<<endl; for (int i=sz[v];i>=0;i--) { ans[i*2] = max(ans[i*2], mx[i] + max(lst[i],1ll) - 1); lst[i] = max(lst[i],mx[i]), mx[i] = 0; } } //cout<<endl; for (int i=0;i<=tot;i++) mx[i] = lst[i] = 0; check[ct] = true; for (auto v : adj[ct]) { if (check[v]) continue; dfs(v); } } void solve() { cin>>n; for (int i=1;i<n;i++) { int u,v,w; cin>>u>>v; adj[u].pb(v); adj[v].pb(u); } dfs(1); for (int i=1;i<=n;i++) cout<<(ans[i] ? ans[i] : 1)<<endl; } signed main() { bruh //freopen("input.inp","r",stdin); //freopen("output.inp","w",stdout); int t = 1; //cin>>t; while (t--) { solve(); cout<<"\n"; } }

Compilation message (stderr)

meetings2.cpp: In function 'void solve()':
meetings2.cpp:102:11: warning: unused variable 'w' [-Wunused-variable]
  102 |   int u,v,w; cin>>u>>v;
      |           ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...