Submission #1575202
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, n) for(int i = 0; i < (n); i++)
#define MEM(a, x) memset(a, x, sizeof(a))
#define ALL(a) a.begin(), a.end()
#define UNIQUE(a) a.erase(unique(ALL(a)), a.end())
typedef long long ll;
int n, q;
int par[20][100005], dep[100005];
vector<int> g[100005];
void dfs(int v, int p, int d) {
par[0][v] = p;
dep[v] = d;
FOR(i, g[v].size()) {
if (g[v][i] != p) dfs(g[v][i], v, d+1);
}
}
void init() {
dfs(0, -1, 0);
FOR(k, 20-1) {
FOR(v, n) {
if (par[k][v] < 0) par[k+1][v] = -1;
else par[k+1][v] = par[k][par[k][v]];
}
}
}
int lca(int u, int v) {
if (dep[u] > dep[v]) swap(u, v);
FOR(k, 20) {
if ((dep[v]-dep[u]) >> k & 1) {
v = par[k][v];
}
}
if (u == v) return u;
for (int k = 20-1; k >= 0; k--) {
if (par[k][u] != par[k][v]) {
u = par[k][u];
v = par[k][v];
}
}
return par[0][u];
}
int main(int argc, char const *argv[]) {
ios_base::sync_with_stdio(false);
cin >> n;
FOR(i, n-1) {
int a, b;
cin >> a >> b;
g[a-1].push_back(b-1);
g[b-1].push_back(a-1);
}
init();
cin >> q;
vector<int> ans(q);
FOR(i, q) {
int a, b;
cin >> a >> b;
a--;
b--;
ans[i] = dep[a] + dep[b] - 2 * dep[lca(a, b)] + 1;
}
FOR(i, q) cout << ans[i] << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
D - 閉路 |
User |
moguta |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
1332 Byte |
Status |
AC |
Exec Time |
237 ms |
Memory |
21248 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Score / Max Score |
0 / 0 |
30 / 30 |
70 / 70 |
Status |
|
|
|
Set Name |
Test Cases |
Sample |
subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt |
Subtask1 |
subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt |
Subtask2 |
subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_sample01.txt |
AC |
4 ms |
10496 KB |
subtask0_sample02.txt |
AC |
4 ms |
10496 KB |
subtask0_sample03.txt |
AC |
4 ms |
10496 KB |
subtask1_01.txt |
AC |
34 ms |
20224 KB |
subtask1_02.txt |
AC |
34 ms |
20224 KB |
subtask1_03.txt |
AC |
4 ms |
10496 KB |
subtask1_04.txt |
AC |
4 ms |
10496 KB |
subtask1_05.txt |
AC |
4 ms |
10496 KB |
subtask1_06.txt |
AC |
4 ms |
10496 KB |
subtask1_07.txt |
AC |
40 ms |
14080 KB |
subtask1_08.txt |
AC |
41 ms |
13952 KB |
subtask1_09.txt |
AC |
42 ms |
13952 KB |
subtask1_10.txt |
AC |
43 ms |
13952 KB |
subtask1_11.txt |
AC |
42 ms |
13952 KB |
subtask1_12.txt |
AC |
42 ms |
13952 KB |
subtask2_01.txt |
AC |
201 ms |
21248 KB |
subtask2_02.txt |
AC |
199 ms |
21120 KB |
subtask2_03.txt |
AC |
167 ms |
11136 KB |
subtask2_04.txt |
AC |
176 ms |
11136 KB |
subtask2_05.txt |
AC |
176 ms |
11264 KB |
subtask2_06.txt |
AC |
183 ms |
11264 KB |
subtask2_07.txt |
AC |
223 ms |
14720 KB |
subtask2_08.txt |
AC |
225 ms |
14720 KB |
subtask2_09.txt |
AC |
230 ms |
14720 KB |
subtask2_10.txt |
AC |
234 ms |
14720 KB |
subtask2_11.txt |
AC |
237 ms |
14720 KB |
subtask2_12.txt |
AC |
236 ms |
14720 KB |