# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1171436 | MinhKien | Race (IOI11_race) | C++20 | 0 ms | 0 KiB |
#include <iostream>
#include <vector>
using namespace std;
#define ii pair <int, int>
#define fi first
#define se second
const int N = 2e5 + 10;
const int M = 1e6 + 10;
int n, k, x, y, w;
vector <ii> v[N];
int sz[N], dis[M];
bool solved[N];
int calc_size(int s, int p = -1) {
sz[s] = 1;
for (ii z: v[s]) {
if (z.fi == p || solved[z.fi]) continue;
sz[s] += calc_size(z.fi, s);
}
return sz[s];
}
int FindCentroid(int s, int Size, int p = -1) {
for (ii z: v[s]) {
if (z.fi == p || solved[z.fi]) continue;
if (sz[z.fi] > Size) return FindCentroid(z.fi, Size, s);
}