# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
237346 | nikatamliani | One-Way Streets (CEOI17_oneway) | C++14 | 496 ms | 39136 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>
using namespace std;
const int N = 1e5 + 10, LG = 20;
int d[N], a[N], b[N], in[N], out[N], dp[N], p[N][2], L[N][LG], n, m, q;
vector < pair < int, int > > edges[N];
bool ok[N], vis[N], marked[N][2];
map < pair < int, int >, int > ind;
void dfs(int x, int p, int index){
static int timer = 0;
if(vis[x])return;
vis[x] = true;
d[x] = d[p] + 1;
L[x][0] = p;
for(int i = 1; i < LG; ++i) L[x][i] = L[L[x][i - 1]][i - 1];
in[x] = ++timer;
for(int i = 0; i < (int)edges[x].size(); ++i){
int to = edges[x][i].first;
if(edges[x][i].second != index){
if(vis[to]){
dp[x] += in[x] < in[to] ? -1 : 1;
}else{
dfs(to, x, edges[x][i].second);
dp[x] += dp[to];
}
}
}
out[x] = ++timer;
ok[ind[{x, p}]] = !dp[x];
}
bool isAnc(int potAnc, int potChild){
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |