Submission #1756018
Source Code Expand
//#define __USE_MINGW_ANSI_STDIO 0
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int ll
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<ll> VL;
typedef vector<VL> VVL;
typedef pair<int, int> PII;
#define FOR(i, a, n) for (ll i = (ll)a; i < (ll)n; ++i)
#define REP(i, n) FOR(i, 0, n)
#define ALL(x) x.begin(), x.end()
#define IN(a, b, x) (a<=x&&x<b)
#define MP make_pair
#define PB push_back
#ifdef int
const ll INF = (1LL<<60);
#else
const int INF = (1LL<<30);
#endif
const double PI = 3.14159265359;
const double EPS = 1e-12;
const int MOD = 1000000007;
template <typename T> T &chmin(T &a, const T &b) { return a = min(a, b); }
template <typename T> T &chmax(T &a, const T &b) { return a = max(a, b); }
int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
#define MAX_N 100010
#define MAX_LOG_N 30
VI G[MAX_N]; //グラフの隣接リスト
int root = 0; //根のノード
int parent[MAX_LOG_N][MAX_N];
int depth[MAX_N];
void dfs(int v, int p, int d) {
parent[0][v] = p;
depth[v] = d;
REP(i, G[v].size()) if(G[v][i] != p) dfs(G[v][i], v, d+1);
}
//初期化 O(logn)
void init(int n) {
dfs(root, -1, 0);
REP(k, MAX_LOG_N-1) REP(v, n) {
if(parent[k][v] < 0) parent[k+1][v] = -1;
else parent[k+1][v] = parent[k][parent[k][v]];
}
}
// uとvのlcaを求める
int lca(int u, int v) {
if(depth[u] > depth[v]) swap(u, v);
REP(k, MAX_LOG_N) {
if((depth[v]-depth[u]) >> k & 1) v = parent[k][v];
}
if(u == v) return u;
for(int k = MAX_LOG_N-1; k>=0; k--) {
if(parent[k][u] != parent[k][v]) {
u = parent[k][u];
v = parent[k][v];
}
}
return parent[0][u];
}
signed main(void)
{
int n;
cin >> n;
REP(i, n-1) {
int x, y;
cin >> x >> y;
x--, y--;
G[x].PB(y);
G[y].PB(x);
}
init(n);
int q;
cin >> q;
REP(i, q) {
int a, b;
cin >> a >> b;
a--, b--;
int c = lca(a, b);
cout << depth[a] - depth[c] + depth[b] - depth[c] + 1 << endl;
}
return 0;
}
Submission Info
Submission Time |
|
Task |
D - 閉路 |
User |
ferin_tech |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2101 Byte |
Status |
AC |
Exec Time |
484 ms |
Memory |
36864 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 |
7 ms |
24832 KB |
subtask0_sample02.txt |
AC |
7 ms |
24832 KB |
subtask0_sample03.txt |
AC |
7 ms |
24832 KB |
subtask1_01.txt |
AC |
78 ms |
36224 KB |
subtask1_02.txt |
AC |
78 ms |
36224 KB |
subtask1_03.txt |
AC |
7 ms |
24832 KB |
subtask1_04.txt |
AC |
7 ms |
24832 KB |
subtask1_05.txt |
AC |
7 ms |
24832 KB |
subtask1_06.txt |
AC |
7 ms |
24832 KB |
subtask1_07.txt |
AC |
88 ms |
30592 KB |
subtask1_08.txt |
AC |
89 ms |
30464 KB |
subtask1_09.txt |
AC |
89 ms |
30464 KB |
subtask1_10.txt |
AC |
90 ms |
30464 KB |
subtask1_11.txt |
AC |
90 ms |
30464 KB |
subtask1_12.txt |
AC |
90 ms |
30464 KB |
subtask2_01.txt |
AC |
288 ms |
36864 KB |
subtask2_02.txt |
AC |
299 ms |
36736 KB |
subtask2_03.txt |
AC |
214 ms |
24960 KB |
subtask2_04.txt |
AC |
230 ms |
24960 KB |
subtask2_05.txt |
AC |
253 ms |
25216 KB |
subtask2_06.txt |
AC |
255 ms |
25216 KB |
subtask2_07.txt |
AC |
478 ms |
30848 KB |
subtask2_08.txt |
AC |
484 ms |
30720 KB |
subtask2_09.txt |
AC |
465 ms |
30848 KB |
subtask2_10.txt |
AC |
467 ms |
30848 KB |
subtask2_11.txt |
AC |
475 ms |
30848 KB |
subtask2_12.txt |
AC |
472 ms |
30848 KB |