# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1173431 | nguyenkhangninh99 | Factories (JOI14_factories) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
#include "factories.h"
using namespace std;
#define int long long
const int maxn = 5e5 + 5;
vector<pair<int, int>> g[maxn], adj[maxn];
int h[maxn], depth[maxn], up[maxn][22], tin[maxn], out[maxn], timeDfs;
bool is1[maxn], is2[maxn];
int f[maxn][2];
int ans;
void dfs(int u){
tin[u] = ++timeDfs;
for(auto [v, w]: g[u]){
if(v == up[u][0]) continue;
h[v] = h[u] + 1;
depth[v] = depth[u] + w;
up[v][0] = u;
for(int j = 1; j <= 21; j++) up[v][j] = up[up[v][j - 1]][j - 1];
dfs(v);
}
out[u] = timeDfs;