# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
166908 | wmrmr | 공장들 (JOI14_factories) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "factories.h"
using namespace std;
const int MAX = 5e5+10, LOG = 22;
const long long int INF = 1e18;
vector<int> g[MAX], p[MAX];
vector<int> rList;
int troidProf[MAX], troidPai[MAX], sub[MAX];
long long int troidDist[LOG][MAX], mnDist[MAX];
bool isTroid[MAX], active[MAX];
void CalcSub(int v, int pai)
{
sub[v] = 1;
for(int i=0;i<g[v].size();i++)
{
int prox = g[v][i];
if(prox == pai || isTroid[prox]) continue;
CalcSub(prox,v);
sub[v] += sub[prox];
}
return;
}
int FindTroid(int v, int pai, int sz)
{
for(int i=0;i<g[v].size();i++)
{
int prox = g[v][i];
if( prox == pai || isTroid[prox] ) continue;
if( sub[prox] > sz/2 ) return FindTroid(prox,v,sz);
}