Submission #230704
Source Code Expand
#include <iostream> #include <algorithm> #include <array> #include <climits> #include <cmath> #include <iterator> #include <list> #include <map> #include <numeric> #include <queue> #include <set> #include <sstream> #include <string> #include <tuple> #include <vector> typedef long long ll; typedef unsigned int uint; typedef unsigned long long ull; using namespace std; static const int MAX_V = 100000; static const int MAX_LOG_V = 18; vector<int> G[MAX_V]; int root; int parent[MAX_LOG_V][MAX_V]; int depth[MAX_V]; void dfs(int v, int p, int d) { parent[0][v] = p; depth[v] = d; for (int i = 0; i < (int)G[v].size(); i++) { if (G[v][i] != p) dfs(G[v][i], v, d + 1); } } void init(int V) { dfs(root, -1, 0); for (int k = 0; k + 1 < MAX_LOG_V; k++) { for (int v = 0; v < V; v++) { if (parent[k][v] < 0) parent[k + 1][v] = -1; else parent[k + 1][v] = parent[k][parent[k][v]]; } } } int lca(int u, int v) { if (depth[u] > depth[v]) swap(u, v); for (int k = 0; k < MAX_LOG_V; k++) { if ((depth[v] - depth[u]) >> k & 1) { v = parent[k][v]; } } if (u == v) return u; for (int k = MAX_LOG_V - 1; k >= 0; k--) { if (parent[k][u] != parent[k][v]) { u = parent[k][u]; v = parent[k][v]; } } return parent[0][u]; } int main() { int N; cin >> N; for (int i = 0; i < N - 1; i++) { int x; int y; cin >> x >> y; x--; y--; G[x].push_back(y); G[y].push_back(x); } init(N); int Q; cin >> Q; for (int i = 0; i < Q; i++) { int a; int b; cin >> a >> b; a--; b--; std::cout << depth[a] + depth[b] - 2 * depth[lca(a, b)] + 1 << std::endl; } }
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | sekiye |
Language | C++11 (GCC 4.8.1) |
Score | 100 |
Code Size | 1791 Byte |
Status | AC |
Exec Time | 792 ms |
Memory | 18352 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 | 32 ms | 3164 KB |
subtask0_sample02.txt | AC | 31 ms | 3112 KB |
subtask0_sample03.txt | AC | 30 ms | 3104 KB |
subtask1_01.txt | AC | 180 ms | 18352 KB |
subtask1_02.txt | AC | 178 ms | 18340 KB |
subtask1_03.txt | AC | 32 ms | 3168 KB |
subtask1_04.txt | AC | 31 ms | 3104 KB |
subtask1_05.txt | AC | 32 ms | 3236 KB |
subtask1_06.txt | AC | 30 ms | 3364 KB |
subtask1_07.txt | AC | 188 ms | 13740 KB |
subtask1_08.txt | AC | 188 ms | 13728 KB |
subtask1_09.txt | AC | 187 ms | 13732 KB |
subtask1_10.txt | AC | 186 ms | 13728 KB |
subtask1_11.txt | AC | 187 ms | 13732 KB |
subtask1_12.txt | AC | 191 ms | 13732 KB |
subtask2_01.txt | AC | 599 ms | 18340 KB |
subtask2_02.txt | AC | 626 ms | 18340 KB |
subtask2_03.txt | AC | 406 ms | 3100 KB |
subtask2_04.txt | AC | 432 ms | 3104 KB |
subtask2_05.txt | AC | 491 ms | 3244 KB |
subtask2_06.txt | AC | 471 ms | 3240 KB |
subtask2_07.txt | AC | 762 ms | 13788 KB |
subtask2_08.txt | AC | 767 ms | 13736 KB |
subtask2_09.txt | AC | 764 ms | 13608 KB |
subtask2_10.txt | AC | 778 ms | 13728 KB |
subtask2_11.txt | AC | 792 ms | 13736 KB |
subtask2_12.txt | AC | 775 ms | 13728 KB |