Submission #1755955
Source Code Expand
#include "iostream" #include "climits" #include "list" #include "queue" #include "stack" #include "set" #include "functional" #include "algorithm" #include "string" #include "map" #include "iomanip" #include "cmath" using namespace std; const long long int MOD = 1000000007; long long int N, M, K, H, W, L, R; class Lowest_Common_Ancestor { vector<int>depth; vector<int>parent[25]; list<int>edge[1000001]; int node; public: Lowest_Common_Ancestor(int num) { node = num; num++; depth.resize(num); for (int i = 0; i < 25; i++)parent[i].resize(num); } void Add_Edge(int a, int b) { edge[a].push_back(b); edge[b].push_back(a); return; } void Update() { queue<int>QQ; depth[1] = 0; for (int i = 2; i <= node; i++) depth[i] = INT_MAX; QQ.push(1); while (!QQ.empty()) { int c = QQ.front(); for (auto i : edge[c]) { if (depth[i] > depth[c] + 1) { depth[i] = depth[c] + 1; QQ.push(i); } } QQ.pop(); } parent[0][1] = -1; for (int i = 2; i <= node; i++) { for (auto j : edge[i]) { if (depth[i] - 1 == depth[j]) { parent[0][i] = j; break; } } } for (int i = 0; i < 24; i++) { for (int j = 1; j <= node; j++) { if (parent[i][j] < 0)parent[i + 1][j] = -1; else parent[i + 1][j] = parent[i][parent[i][j]]; } } return; } int LCA(int u, int v) { if (depth[u] > depth[v])swap(u, v); for (int i = 0; i < 25; i++) { if ((depth[v] - depth[u]) >> i & 1) { v = parent[i][v]; } } if (u == v)return u; for (int i = 24; i >= 0; i--) { if (parent[i][v] != parent[i][u]) { u = parent[i][u]; v = parent[i][v]; } } return parent[0][u]; } int Dist(int u, int v) { return depth[u] + depth[v] - depth[LCA(u, v)] * 2; } }; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> N; Lowest_Common_Ancestor lca(N); for (int i = 1; i < N; i++) { cin >> L >> R; lca.Add_Edge(L, R); } lca.Update(); cin >> M; for (int i = 0; i < M; i++) { cin >> L >> R; cout << lca.Dist(L, R)+1 << endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | olphe |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 2160 Byte |
Status | AC |
Exec Time | 337 ms |
Memory | 33024 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 | 15872 KB |
subtask0_sample02.txt | AC | 7 ms | 15872 KB |
subtask0_sample03.txt | AC | 6 ms | 15872 KB |
subtask1_01.txt | AC | 42 ms | 32384 KB |
subtask1_02.txt | AC | 42 ms | 32384 KB |
subtask1_03.txt | AC | 6 ms | 15872 KB |
subtask1_04.txt | AC | 6 ms | 15872 KB |
subtask1_05.txt | AC | 7 ms | 16000 KB |
subtask1_06.txt | AC | 7 ms | 16000 KB |
subtask1_07.txt | AC | 59 ms | 32384 KB |
subtask1_08.txt | AC | 65 ms | 32384 KB |
subtask1_09.txt | AC | 64 ms | 32384 KB |
subtask1_10.txt | AC | 65 ms | 32384 KB |
subtask1_11.txt | AC | 66 ms | 32384 KB |
subtask1_12.txt | AC | 61 ms | 32384 KB |
subtask2_01.txt | AC | 215 ms | 33024 KB |
subtask2_02.txt | AC | 212 ms | 32896 KB |
subtask2_03.txt | AC | 175 ms | 16128 KB |
subtask2_04.txt | AC | 183 ms | 16128 KB |
subtask2_05.txt | AC | 185 ms | 16384 KB |
subtask2_06.txt | AC | 186 ms | 16384 KB |
subtask2_07.txt | AC | 310 ms | 32640 KB |
subtask2_08.txt | AC | 311 ms | 32640 KB |
subtask2_09.txt | AC | 323 ms | 32640 KB |
subtask2_10.txt | AC | 321 ms | 32768 KB |
subtask2_11.txt | AC | 337 ms | 32768 KB |
subtask2_12.txt | AC | 321 ms | 32768 KB |