# | 제출 시각UTC-0 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1154172 | pokmui9909 | Capital City (JOI20_capital_city) | C++17 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define x first
#define y second
ll N, K, A[200005], Tot[200005], S[200005], vis[200005];
vector<ll> T[200005];
ll Size(ll u, ll p){
S[u] = 1;
for(auto v : T[u]){
if(v != p && !vis[v]) S[u] += Size(v, u);
}
return S[u];
}
ll Cent(ll u, ll p, ll n){
for(auto v : T[u]){
if(v != p && !vis[v] && S[v] > n / 2) return Cent(v, u, n);
}
return u;
}
ll Par[200005], chk[200005], Ans = 1e18;
vector<ll> U[200005];
void dfs(ll u, ll p, vector<ll> &V, vector<ll> &Del){
Par[u] = p;
V.push_back(A[u]); Del.push_back(u);