Submission #1222776

#TimeUsernameProblemLanguageResultExecution timeMemory
1222776sleepntsheepPrize (CEOI22_prize)C++17
Compilation error
0 ms0 KiB
#include <cstdio> #include <cassert> #include <algorithm> using namespace std; #define Q 2000000 #define N 2000000 #define T 100000 int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2] , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N] , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N] , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N] , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N] , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N] , q1[T], q2[T], lv3_[N] ; int cmp(int i, int j) { return dfn2[i] < dfn2[j]; } void add(int u, int v) { ++ii; e[ii] = v, Ln[ii] = hd[u]; hd[u] = ii; } void add2(int u, int v) {++ii2; e2[ii2] = v, Ln2[ii2] = hd2[u]; hd2[u] = ii2;} void add3(int u, int v, int w) { ++ii3; cst[ii3] = w; e3[ii3] = v, Ln3[ii3] = hd3[u]; hd3[u] = ii3; } void dfs(int u) { sz[u] = 1; for (int v, j = hd[u]; j; j = Ln[j]) { v = e[j]; if (v == fa[u]) continue; fa[v] = u, lv[v] = lv[u] + 1, dfs(v); sz[u] += sz[v]; if (e[hd[u]]==fa[u]||sz[v] > sz[e[hd[u]]]) e[j] = e[hd[u]], e[hd[u]] = v; } } void dfs2(int u) { nfd[dfn[u] = dfc++] = u; for (int v, j = hd[u]; j; j = Ln[j]) { v = e[j]; if(v == fa[u]) continue; hld[v] = j == hd[u] ? hld[u]: v; dfs2(v); } } void efs(int u) { sz2[u] = 1; for (int v, j = hd2[u]; j; j = Ln2[j]) { v = e2[j]; if (v == fa2[u]) continue; lv2[v] = lv2[u] + 1; fa2[v] = u; efs(v); sz2[u] += sz2[v]; if (e2[hd2[u]]==fa2[u] || sz2[v] > sz2[e2[hd2[u]]]) e2[j] = e2[hd2[u]], e2[hd2[u]] = v; } } void efs2(int u) { dfn2[u] = dfc2++; for (int v, j = hd2[u]; j; j = Ln2[j]) { v = e2[j]; if (v == fa2[u]) continue; hld2[v] = j == hd2[u] ? hld2[u]: v; efs2(v); } } void gfs(int u) { sz3[u] = 1; for (int v, j = hd3[u]; j; j = Ln3[j]) { v = e3[j]; if (v == fa3[u]) continue; lv3_[v] = lv3_[u] + 1; lv3[v] = lv3[u] + cst[j], fa3[v] = u, gfs(v); sz3[u] += sz3[v]; if (e3[hd3[u]] == fa3[u] || sz3[v] > sz3[e3[hd3[u]]]) e3[j] = e3[hd3[u]], e3[hd3[u]] = v; } } void gfs2(int u) { dfn3[u] = dfc3++; for (int v, j = hd3[u]; j; j = Ln3[j]) { v = e3[j]; if (v == fa3[u]) continue; hld3[v] = j == hd3[u] ? hld3[u]: v; gfs2(v); } } int lca(int u, int v) { while (hld[u] != hld[v]) if (lv[hld[u]] > lv[hld[v]]) u = fa[hld[u]]; else v = fa[hld[v]]; return dfn[u] < dfn[v] ? u: v; } int lca2(int u, int v) { while (hld2[u] != hld2[v]) if (lv2[hld2[u]] > lv2[hld2[v]]) u = fa2[hld2[u]]; else v = fa2[hld2[v]]; return dfn2[u] < dfn2[v] ? u: v; } int lca3(int u, int v) { while (hld3[u] != hld3[v]) if (lv3_[hld3[u]] > lv3_[hld3[v]]) u = fa3[hld3[u]]; else v = fa3[hld3[v]]; return dfn3[u] < dfn3[v] ? u: v; } int main() { scanf("%d%d%d%d", &n, &k, &q, &t); for (int j, i = 0; i < n; ++i) { scanf("%d", &j); if (j > -1) add(--j, i), add(i, j); } for (int i = 0, j; i < n; ++i) { scanf("%d", &j); if (j > -1) add2(--j, i), add2(i, j); else rt = i; } fa [rt] = rt; hld[rt] = rt; fa2[rt] = rt; hld2[rt] = rt; fa3[rt] = rt; hld3[rt] = rt; dfs(rt), dfs2(rt); efs(rt), efs2(rt); for (int i = 0; i < k; ++i) V[tp++] = nfd[i]; sort(V, V + tp, cmp); for (int i = 0; i < k; ++i) printf("%d ", 1 + nfd[i]); puts(""), fflush(stdout); for (int i = 1; i < k; ++i) printf("? %d %d\n", 1 + rt, 1 + nfd[i]); for (int i = 1; i < tp; ++i) printf("? %d %d\n", 1 + V[i - 1], 1 + V[i]); puts("!"), fflush(stdout); for (int i = 1, _, __; i < k; ++i) { scanf("%d%d%d%d", &_, dis + nfd[i], &__, dis2 + nfd[i]); dis[nfd[i]] += _; } for (int d1, d2, i = 1, _; i < tp; ++i) { scanf("%d%d%d%d", &_, &_, &d1, &d2); dis2[lca2(V[i - 1], V[i])] = dis2[V[i]] - d2; } for (int oldtp = tp, i = 1; i < oldtp; ++i) V[tp++] = lca2(V[i - 1], V[i]); sort(V, V + tp, cmp); tp = unique(V, V + tp) - V; sta[++tp] = V[0]; for (int i = 1; i < tp; ++i) { while (tp > 0 && ! (dfn2[sta[tp]] <= dfn2[V[i]] && dfn2[V[i]] + sz2[V[i]] <= dfn2[sta[tp]] + sz2[sta[tp]]) ) --tp; add3(sta[tp], V[i], dis2[V[i]] - dis2[sta[tp]]); add3(V[i], sta[tp], dis2[V[i]] - dis2[sta[tp]]); } gfs(rt); gfs2(rt); for (int i = 0; i < t; ++i) scanf("%d%d", &q1[i], &q2[i]), --q1[i], --q2[i]; for (int i = 0; i < t; ++i) { int u, v, x, y; u = q1[i], v = q2[i]; //x = dis[u] + dis[v] - 2 * dis[lca(u, v)]; //y = lv3[u] + lv3[v] - 2 * lv3[lca3(u, v)]; x = 0; y = 0; printf("%d %d\n", x, y); } fflush(stdout); return 0; } #include <cstdio> #include <cassert> #include <algorithm> using namespace std; #define Q 2000000 #define N 2000000 #define T 100000 int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2] , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N] , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N] , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N] , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N] , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N] , q1[T], q2[T], lv3_[N] ; int cmp(int i, int j) { return dfn2[i] < dfn2[j]; } void add(int u, int v) { ++ii; e[ii] = v, Ln[ii] = hd[u]; hd[u] = ii; } void add2(int u, int v) {++ii2; e2[ii2] = v, Ln2[ii2] = hd2[u]; hd2[u] = ii2;} void add3(int u, int v, int w) { ++ii3; cst[ii3] = w; e3[ii3] = v, Ln3[ii3] = hd3[u]; hd3[u] = ii3; } void dfs(int u) { sz[u] = 1; for (int v, j = hd[u]; j; j = Ln[j]) { v = e[j]; if (v == fa[u]) continue; fa[v] = u, lv[v] = lv[u] + 1, dfs(v); sz[u] += sz[v]; if (e[hd[u]]==fa[u]||sz[v] > sz[e[hd[u]]]) e[j] = e[hd[u]], e[hd[u]] = v; } } void dfs2(int u) { nfd[dfn[u] = dfc++] = u; for (int v, j = hd[u]; j; j = Ln[j]) { v = e[j]; if(v == fa[u]) continue; hld[v] = j == hd[u] ? hld[u]: v; dfs2(v); } } void efs(int u) { sz2[u] = 1; for (int v, j = hd2[u]; j; j = Ln2[j]) { v = e2[j]; if (v == fa2[u]) continue; lv2[v] = lv2[u] + 1; fa2[v] = u; efs(v); sz2[u] += sz2[v]; if (e2[hd2[u]]==fa2[u] || sz2[v] > sz2[e2[hd2[u]]]) e2[j] = e2[hd2[u]], e2[hd2[u]] = v; } } void efs2(int u) { dfn2[u] = dfc2++; for (int v, j = hd2[u]; j; j = Ln2[j]) { v = e2[j]; if (v == fa2[u]) continue; hld2[v] = j == hd2[u] ? hld2[u]: v; efs2(v); } } void gfs(int u) { sz3[u] = 1; for (int v, j = hd3[u]; j; j = Ln3[j]) { v = e3[j]; if (v == fa3[u]) continue; lv3_[v] = lv3_[u] + 1; lv3[v] = lv3[u] + cst[j], fa3[v] = u, gfs(v); sz3[u] += sz3[v]; if (e3[hd3[u]] == fa3[u] || sz3[v] > sz3[e3[hd3[u]]]) e3[j] = e3[hd3[u]], e3[hd3[u]] = v; } } void gfs2(int u) { dfn3[u] = dfc3++; for (int v, j = hd3[u]; j; j = Ln3[j]) { v = e3[j]; if (v == fa3[u]) continue; hld3[v] = j == hd3[u] ? hld3[u]: v; gfs2(v); } } int lca(int u, int v) { while (hld[u] != hld[v]) if (lv[hld[u]] > lv[hld[v]]) u = fa[hld[u]]; else v = fa[hld[v]]; return dfn[u] < dfn[v] ? u: v; } int lca2(int u, int v) { while (hld2[u] != hld2[v]) if (lv2[hld2[u]] > lv2[hld2[v]]) u = fa2[hld2[u]]; else v = fa2[hld2[v]]; return dfn2[u] < dfn2[v] ? u: v; } int lca3(int u, int v) { while (hld3[u] != hld3[v]) if (lv3_[hld3[u]] > lv3_[hld3[v]]) u = fa3[hld3[u]]; else v = fa3[hld3[v]]; return dfn3[u] < dfn3[v] ? u: v; } int main() { scanf("%d%d%d%d", &n, &k, &q, &t); for (int j, i = 0; i < n; ++i) { scanf("%d", &j); if (j > -1) add(--j, i), add(i, j); } for (int i = 0, j; i < n; ++i) { scanf("%d", &j); if (j > -1) add2(--j, i), add2(i, j); else rt = i; } fa [rt] = rt; hld[rt] = rt; fa2[rt] = rt; hld2[rt] = rt; fa3[rt] = rt; hld3[rt] = rt; dfs(rt), dfs2(rt); efs(rt), efs2(rt); for (int i = 0; i < k; ++i) V[tp++] = nfd[i]; sort(V, V + tp, cmp); for (int i = 0; i < k; ++i) printf("%d ", 1 + nfd[i]); puts(""), fflush(stdout); for (int i = 1; i < k; ++i) printf("? %d %d\n", 1 + rt, 1 + nfd[i]); for (int i = 1; i < tp; ++i) printf("? %d %d\n", 1 + V[i - 1], 1 + V[i]); puts("!"), fflush(stdout); for (int i = 1, _, __; i < k; ++i) { scanf("%d%d%d%d", &_, dis + nfd[i], &__, dis2 + nfd[i]); dis[nfd[i]] += _; } for (int d1, d2, i = 1, _; i < tp; ++i) { scanf("%d%d%d%d", &_, &_, &d1, &d2); dis2[lca2(V[i - 1], V[i])] = dis2[V[i]] - d2; } for (int oldtp = tp, i = 1; i < oldtp; ++i) V[tp++] = lca2(V[i - 1], V[i]); sort(V, V + tp, cmp); tp = unique(V, V + tp) - V; sta[++tp] = V[0]; for (int i = 1; i < tp; ++i) { while (tp > 0 && ! (dfn2[sta[tp]] <= dfn2[V[i]] && dfn2[V[i]] + sz2[V[i]] <= dfn2[sta[tp]] + sz2[sta[tp]]) ) --tp; add3(sta[tp], V[i], dis2[V[i]] - dis2[sta[tp]]); add3(V[i], sta[tp], dis2[V[i]] - dis2[sta[tp]]); } gfs(rt); gfs2(rt); for (int i = 0; i < t; ++i) scanf("%d%d", &q1[i], &q2[i]), --q1[i], --q2[i]; for (int i = 0; i < t; ++i) { int u, v, x, y; u = q1[i], v = q2[i]; //x = dis[u] + dis[v] - 2 * dis[lca(u, v)]; //y = lv3[u] + lv3[v] - 2 * lv3[lca3(u, v)]; x = 0; y = 0; printf("%d %d\n", x, y); } fflush(stdout); return 0; }

Compilation message (stderr)

Main.cpp:205:5: error: redefinition of 'int n'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |     ^
Main.cpp:12:5: note: 'int n' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |     ^
Main.cpp:205:8: error: redefinition of 'int k'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |        ^
Main.cpp:12:8: note: 'int k' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |        ^
Main.cpp:205:11: error: redefinition of 'int q'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |           ^
Main.cpp:12:11: note: 'int q' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |           ^
Main.cpp:205:14: error: redefinition of 'int t'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |              ^
Main.cpp:12:14: note: 'int t' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |              ^
Main.cpp:205:17: error: redefinition of 'int dfn [2000000]'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                 ^~~
Main.cpp:12:17: note: 'int dfn [2000000]' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                 ^~~
Main.cpp:205:25: error: redefinition of 'int dfc'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                         ^~~
Main.cpp:12:25: note: 'int dfc' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                         ^~~
Main.cpp:205:30: error: redefinition of 'int nfd [2000000]'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                              ^~~
Main.cpp:12:30: note: 'int nfd [2000000]' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                              ^~~
Main.cpp:205:38: error: redefinition of 'int fa [2000000]'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                                      ^~
Main.cpp:12:38: note: 'int fa [2000000]' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                                      ^~
Main.cpp:205:45: error: redefinition of 'int hd [2000000]'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                                             ^~
Main.cpp:12:45: note: 'int hd [2000000]' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                                             ^~
Main.cpp:205:52: error: redefinition of 'int e [4000000]'
  205 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                                                    ^
Main.cpp:12:52: note: 'int e [4000000]' previously declared here
   12 | int n, k, q, t, dfn[N], dfc, nfd[N], fa[N], hd[N], e[N * 2]
      |                                                    ^
Main.cpp:206:3: error: redefinition of 'int Ln [4000000]'
  206 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |   ^~
Main.cpp:13:3: note: 'int Ln [4000000]' previously declared here
   13 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |   ^~
Main.cpp:206:14: error: redefinition of 'int ii'
  206 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |              ^~
Main.cpp:13:14: note: 'int ii' previously declared here
   13 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |              ^~
Main.cpp:206:18: error: redefinition of 'int rt'
  206 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                  ^~
Main.cpp:13:18: note: 'int rt' previously declared here
   13 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                  ^~
Main.cpp:206:22: error: redefinition of 'int hld [2000000]'
  206 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                      ^~~
Main.cpp:13:22: note: 'int hld [2000000]' previously declared here
   13 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                      ^~~
Main.cpp:206:30: error: redefinition of 'int lv [2000000]'
  206 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                              ^~
Main.cpp:13:30: note: 'int lv [2000000]' previously declared here
   13 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                              ^~
Main.cpp:206:37: error: redefinition of 'int dis [2000000]'
  206 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                                     ^~~
Main.cpp:13:37: note: 'int dis [2000000]' previously declared here
   13 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                                     ^~~
Main.cpp:206:45: error: redefinition of 'int sz [2000000]'
  206 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                                             ^~
Main.cpp:13:45: note: 'int sz [2000000]' previously declared here
   13 | , Ln[N * 2], ii, rt, hld[N], lv[N], dis[N], sz[N]
      |                                             ^~
Main.cpp:207:3: error: redefinition of 'int hd2 [2000000]'
  207 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |   ^~~
Main.cpp:14:3: note: 'int hd2 [2000000]' previously declared here
   14 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |   ^~~
Main.cpp:207:11: error: redefinition of 'int e2 [4000000]'
  207 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |           ^~
Main.cpp:14:11: note: 'int e2 [4000000]' previously declared here
   14 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |           ^~
Main.cpp:207:22: error: redefinition of 'int Ln2 [4000000]'
  207 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                      ^~~
Main.cpp:14:22: note: 'int Ln2 [4000000]' previously declared here
   14 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                      ^~~
Main.cpp:207:34: error: redefinition of 'int ii2'
  207 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                                  ^~~
Main.cpp:14:34: note: 'int ii2' previously declared here
   14 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                                  ^~~
Main.cpp:207:39: error: redefinition of 'int dfn2 [2000000]'
  207 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                                       ^~~~
Main.cpp:14:39: note: 'int dfn2 [2000000]' previously declared here
   14 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                                       ^~~~
Main.cpp:207:48: error: redefinition of 'int dfc2'
  207 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                                                ^~~~
Main.cpp:14:48: note: 'int dfc2' previously declared here
   14 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                                                ^~~~
Main.cpp:207:54: error: redefinition of 'int fa2 [2000000]'
  207 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                                                      ^~~
Main.cpp:14:54: note: 'int fa2 [2000000]' previously declared here
   14 | , hd2[N], e2[N * 2], Ln2[N * 2], ii2, dfn2[N], dfc2, fa2[N]
      |                                                      ^~~
Main.cpp:208:3: error: redefinition of 'int hld2 [2000000]'
  208 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |   ^~~~
Main.cpp:15:3: note: 'int hld2 [2000000]' previously declared here
   15 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |   ^~~~
Main.cpp:208:12: error: redefinition of 'int lv2 [2000000]'
  208 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |            ^~~
Main.cpp:15:12: note: 'int lv2 [2000000]' previously declared here
   15 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |            ^~~
Main.cpp:208:20: error: redefinition of 'int sz2 [2000000]'
  208 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                    ^~~
Main.cpp:15:20: note: 'int sz2 [2000000]' previously declared here
   15 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                    ^~~
Main.cpp:208:28: error: redefinition of 'int V [4000000]'
  208 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                            ^
Main.cpp:15:28: note: 'int V [4000000]' previously declared here
   15 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                            ^
Main.cpp:208:38: error: redefinition of 'int tp'
  208 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                                      ^~
Main.cpp:15:38: note: 'int tp' previously declared here
   15 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                                      ^~
Main.cpp:208:42: error: redefinition of 'int dis2 [2000000]'
  208 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                                          ^~~~
Main.cpp:15:42: note: 'int dis2 [2000000]' previously declared here
   15 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                                          ^~~~
Main.cpp:208:51: error: redefinition of 'int sta [2000000]'
  208 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                                                   ^~~
Main.cpp:15:51: note: 'int sta [2000000]' previously declared here
   15 | , hld2[N], lv2[N], sz2[N], V[N + N], tp, dis2[N], sta[N]
      |                                                   ^~~
Main.cpp:209:3: error: redefinition of 'int e3 [4000000]'
  209 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |   ^~
Main.cpp:16:3: note: 'int e3 [4000000]' previously declared here
   16 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |   ^~
Main.cpp:209:14: error: redefinition of 'int Ln3 [4000000]'
  209 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |              ^~~
Main.cpp:16:14: note: 'int Ln3 [4000000]' previously declared here
   16 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |              ^~~
Main.cpp:209:26: error: redefinition of 'int ii3'
  209 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                          ^~~
Main.cpp:16:26: note: 'int ii3' previously declared here
   16 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                          ^~~
Main.cpp:209:31: error: redefinition of 'int hd3 [2000000]'
  209 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                               ^~~
Main.cpp:16:31: note: 'int hd3 [2000000]' previously declared here
   16 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                               ^~~
Main.cpp:209:39: error: redefinition of 'int dis3 [2000000]'
  209 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                                       ^~~~
Main.cpp:16:39: note: 'int dis3 [2000000]' previously declared here
   16 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                                       ^~~~
Main.cpp:209:48: error: redefinition of 'int cst [4000000]'
  209 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                                                ^~~
Main.cpp:16:48: note: 'int cst [4000000]' previously declared here
   16 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                                                ^~~
Main.cpp:209:60: error: redefinition of 'int lv3 [2000000]'
  209 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                                                            ^~~
Main.cpp:16:60: note: 'int lv3 [2000000]' previously declared here
   16 | , e3[N * 2], Ln3[N * 2], ii3, hd3[N], dis3[N], cst[N * 2], lv3[N]
      |                                                            ^~~
Main.cpp:210:3: error: redefinition of 'int dfn3 [2000000]'
  210 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |   ^~~~
Main.cpp:17:3: note: 'int dfn3 [2000000]' previously declared here
   17 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |   ^~~~
Main.cpp:210:12: error: redefinition of 'int dfc3'
  210 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |            ^~~~
Main.cpp:17:12: note: 'int dfc3' previously declared here
   17 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |            ^~~~
Main.cpp:210:18: error: redefinition of 'int sz3 [2000000]'
  210 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |                  ^~~
Main.cpp:17:18: note: 'int sz3 [2000000]' previously declared here
   17 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |                  ^~~
Main.cpp:210:26: error: redefinition of 'int hld3 [2000000]'
  210 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |                          ^~~~
Main.cpp:17:26: note: 'int hld3 [2000000]' previously declared here
   17 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |                          ^~~~
Main.cpp:210:35: error: redefinition of 'int fa3 [2000000]'
  210 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |                                   ^~~
Main.cpp:17:35: note: 'int fa3 [2000000]' previously declared here
   17 | , dfn3[N], dfc3, sz3[N], hld3[N], fa3[N]
      |                                   ^~~
Main.cpp:211:3: error: redefinition of 'int q1 [100000]'
  211 | , q1[T], q2[T], lv3_[N]
      |   ^~
Main.cpp:18:3: note: 'int q1 [100000]' previously declared here
   18 | , q1[T], q2[T], lv3_[N]
      |   ^~
Main.cpp:211:10: error: redefinition of 'int q2 [100000]'
  211 | , q1[T], q2[T], lv3_[N]
      |          ^~
Main.cpp:18:10: note: 'int q2 [100000]' previously declared here
   18 | , q1[T], q2[T], lv3_[N]
      |          ^~
Main.cpp:211:17: error: redefinition of 'int lv3_ [2000000]'
  211 | , q1[T], q2[T], lv3_[N]
      |                 ^~~~
Main.cpp:18:17: note: 'int lv3_ [2000000]' previously declared here
   18 | , q1[T], q2[T], lv3_[N]
      |                 ^~~~
Main.cpp:214:5: error: redefinition of 'int cmp(int, int)'
  214 | int cmp(int i, int j) { return dfn2[i] < dfn2[j]; }
      |     ^~~
Main.cpp:21:5: note: 'int cmp(int, int)' previously defined here
   21 | int cmp(int i, int j) { return dfn2[i] < dfn2[j]; }
      |     ^~~
Main.cpp:216:6: error: redefinition of 'void add(int, int)'
  216 | void add(int u, int v) { ++ii; e[ii] = v, Ln[ii] = hd[u]; hd[u] = ii; }
      |      ^~~
Main.cpp:23:6: note: 'void add(int, int)' previously defined here
   23 | void add(int u, int v) { ++ii; e[ii] = v, Ln[ii] = hd[u]; hd[u] = ii; }
      |      ^~~
Main.cpp:217:6: error: redefinition of 'void add2(int, int)'
  217 | void add2(int u, int v) {++ii2; e2[ii2] = v, Ln2[ii2] = hd2[u]; hd2[u] = ii2;}
      |      ^~~~
Main.cpp:24:6: note: 'void add2(int, int)' previously defined here
   24 | void add2(int u, int v) {++ii2; e2[ii2] = v, Ln2[ii2] = hd2[u]; hd2[u] = ii2;}
      |      ^~~~
Main.cpp:218:6: error: redefinition of 'void add3(int, int, int)'
  218 | void add3(int u, int v, int w) {
      |      ^~~~
Main.cpp:25:6: note: 'void add3(int, int, int)' previously defined here
   25 | void add3(int u, int v, int w) {
      |      ^~~~
Main.cpp:221:6: error: redefinition of 'void dfs(int)'
  221 | void dfs(int u) {
      |      ^~~
Main.cpp:28:6: note: 'void dfs(int)' previously defined here
   28 | void dfs(int u) {
      |      ^~~
Main.cpp:232:6: error: redefinition of 'void dfs2(int)'
  232 | void dfs2(int u) {
      |      ^~~~
Main.cpp:39:6: note: 'void dfs2(int)' previously defined here
   39 | void dfs2(int u) {
      |      ^~~~
Main.cpp:242:6: error: redefinition of 'void efs(int)'
  242 | void efs(int u) {
      |      ^~~
Main.cpp:49:6: note: 'void efs(int)' previously defined here
   49 | void efs(int u) {
      |      ^~~
Main.cpp:255:6: error: redefinition of 'void efs2(int)'
  255 | void efs2(int u) {
      |      ^~~~
Main.cpp:62:6: note: 'void efs2(int)' previously defined here
   62 | void efs2(int u) {
      |      ^~~~
Main.cpp:265:6: error: redefinition of 'void gfs(int)'
  265 | void gfs(int u) {
      |      ^~~
Main.cpp:72:6: note: 'void gfs(int)' previously defined here
   72 | void gfs(int u) {
      |      ^~~
Main.cpp:278:6: error: redefinition of 'void gfs2(int)'
  278 | void gfs2(int u) {
      |      ^~~~
Main.cpp:85:6: note: 'void gfs2(int)' previously defined here
   85 | void gfs2(int u) {
      |      ^~~~
Main.cpp:288:5: error: redefinition of 'int lca(int, int)'
  288 | int lca(int u, int v) {
      |     ^~~
Main.cpp:95:5: note: 'int lca(int, int)' previously defined here
   95 | int lca(int u, int v) {
      |     ^~~
Main.cpp:295:5: error: redefinition of 'int lca2(int, int)'
  295 | int lca2(int u, int v) {
      |     ^~~~
Main.cpp:102:5: note: 'int lca2(int, int)' previously defined here
  102 | int lca2(int u, int v) {
      |     ^~~~
Main.cpp:302:5: error: redefinition of 'int lca3(int, int)'
  302 | int lca3(int u, int v) {
      |     ^~~~
Main.cpp:109:5: note: 'int lca3(int, int)' previously defined here
  109 | int lca3(int u, int v) {
      |     ^~~~
Main.cpp:309:5: error: redefinition of 'int main()'
  309 | int main() {
      |     ^~~~
Main.cpp:116:5: note: 'int main()' previously defined here
  116 | int main() {
      |     ^~~~
Main.cpp: In function 'int main()':
Main.cpp:117:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  117 |         scanf("%d%d%d%d", &n, &k, &q, &t);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:120:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  120 |                 scanf("%d", &j);
      |                 ~~~~~^~~~~~~~~~
Main.cpp:126:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  126 |                 scanf("%d", &j);
      |                 ~~~~~^~~~~~~~~~
Main.cpp:150:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  150 |                 scanf("%d%d%d%d", &_, dis + nfd[i], &__, dis2 + nfd[i]);
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:155:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  155 |                 scanf("%d%d%d%d", &_, &_, &d1, &d2);
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:178:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  178 |                 scanf("%d%d", &q1[i], &q2[i]), --q1[i], --q2[i];
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp: In function 'int main()':
Main.cpp:310:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  310 |         scanf("%d%d%d%d", &n, &k, &q, &t);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:313:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  313 |                 scanf("%d", &j);
      |                 ~~~~~^~~~~~~~~~
Main.cpp:319:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  319 |                 scanf("%d", &j);
      |                 ~~~~~^~~~~~~~~~
Main.cpp:343:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  343 |                 scanf("%d%d%d%d", &_, dis + nfd[i], &__, dis2 + nfd[i]);
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:348:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  348 |                 scanf("%d%d%d%d", &_, &_, &d1, &d2);
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:371:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  371 |                 scanf("%d%d", &q1[i], &q2[i]), --q1[i], --q2[i];
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~