Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma comment(linker, "/STACK:16777216")
- #include <cstdio>
- #include <iostream>
- #include <vector>
- #include <map>
- using namespace std;
- const int MAXN = 40002;
- vector <int > G[MAXN];
- int i, j, k, n, dd, idv, idu, t, q, r;
- int in[MAXN], out[MAXN], v, u;
- void dfs(int v, int p)
- {
- in[v] = ++t;
- int u;
- for (int i = 0; i < G[v].size(); i++)
- {
- u = G[v][i];
- if (!in[u] && p !=u)
- dfs(u, v);
- }
- out[v] = ++t;
- }
- int main()
- {
- //freopen("input.txt","r",stdin);
- scanf("%d", &n);
- for (i = 0; i < n; i++)
- {
- scanf("%d%d", &v, &u);
- if (u == -1)
- r = v;
- else
- G[u].push_back(v);
- }
- cin >> q;
- dfs(r, 0);
- while (q --)
- {
- scanf("%d%d", &v, &u);
- if (in[v] < in[u] && out[v] > out[u])
- printf("1\n");
- else
- if (in[v] > in[u] && out[v] < out[u])
- printf("2\n");
- else
- printf("0\n");
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment