Submission #1869447
Source Code Expand
#include <iostream> #include <algorithm> #include <vector> #include <cmath> using namespace std; int N, Q; vector<vector<int>> G; int par[18][100000]; int deg[100000]; int maxDeg; void dfs(int n, int p, int d) { maxDeg = max(maxDeg, d); par[0][n] = p; for (int s = 0; s < G[n].size(); ++s) { int child = G[n][s]; if (child == n) continue; dfs(child, n, d + 1); } } void doubling(){ for (int k = 1; k <= ceil(log2(maxDeg)); ++k) { for (int n = 0; n < N; ++n) { if (par[k - 1][n] == -1) par[k][n] = -1; else par[k][n] = par[k - 1][par[k - 1][n]]; } } } int lca(int a, int b) { if (deg[b] < deg[a]) swap(a, b); int m = deg[b] - deg[a]; for (int i = 0; i < floor(log2(m)) + 1; ++i) { if (m & (1U << i)) { b = par[i][b]; } } if (a == b) return a; for (int k = ceil(log2(maxDeg)); k >= 0; --k) { if (par[k][a] >= 0 && par[k][a] == par[k][b]) break; a = par[k][a]; b = par[k][b]; } return par[0][a]; } int main(void) { cin >> N >> Q; G.resize(N); for (int n = 0; n < N; ++n) { int a, b; cin >> a >> b; --a; --b; G[a].push_back(b); G[b].push_back(a); } int root = 0; dfs(root, -1, 0); doubling(); cin >> Q; for (int q = 0; q < Q; ++q) { int a, b; cin >> a >> b; --a; --b; int l = lca(a, b); cout << deg[a] + deg[b] - deg[l] - deg[l] + 1 << endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | k0101 |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1408 Byte |
Status | RE |
Exec Time | 303 ms |
Memory | 267904 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 30 | 0 / 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 | RE | 228 ms | 262400 KB |
subtask0_sample02.txt | RE | 233 ms | 262400 KB |
subtask0_sample03.txt | RE | 231 ms | 262400 KB |
subtask1_01.txt | RE | 294 ms | 267904 KB |
subtask1_02.txt | RE | 294 ms | 267904 KB |
subtask1_03.txt | RE | 230 ms | 262400 KB |
subtask1_04.txt | RE | 229 ms | 262400 KB |
subtask1_05.txt | RE | 230 ms | 262400 KB |
subtask1_06.txt | RE | 230 ms | 262400 KB |
subtask1_07.txt | RE | 299 ms | 267904 KB |
subtask1_08.txt | RE | 300 ms | 267904 KB |
subtask1_09.txt | RE | 298 ms | 267904 KB |
subtask1_10.txt | RE | 300 ms | 267904 KB |
subtask1_11.txt | RE | 303 ms | 267904 KB |
subtask1_12.txt | RE | 303 ms | 267904 KB |
subtask2_01.txt | RE | 297 ms | 267904 KB |
subtask2_02.txt | RE | 299 ms | 267904 KB |
subtask2_03.txt | RE | 96 ms | 256 KB |
subtask2_04.txt | RE | 97 ms | 256 KB |
subtask2_05.txt | RE | 97 ms | 256 KB |
subtask2_06.txt | RE | 96 ms | 256 KB |
subtask2_07.txt | RE | 301 ms | 267904 KB |
subtask2_08.txt | RE | 299 ms | 267904 KB |
subtask2_09.txt | RE | 299 ms | 267904 KB |
subtask2_10.txt | RE | 302 ms | 267904 KB |
subtask2_11.txt | RE | 300 ms | 267904 KB |
subtask2_12.txt | RE | 300 ms | 267904 KB |