Submission #230705
Source Code Expand
#include <iostream> #include <vector> #include <cmath> using namespace std; const int MAX_V = 1000002; const int MAX_LOG_V = 30; 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 < 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, q, a, b; cin >> n; for(int i = 0; i < n - 1; i++) { cin >> a >> b; a--, b--; G[a].push_back(b); G[b].push_back(a); } init(n); cin >> q; for(int i = 0; i < q; i++) { cin >> a >> b; a--, b--; int v = lca(a, b); cout << depth[a] + depth[b] - 2 * depth[v] + 1 << endl; } }
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | Allen |
Language | C++ (G++ 4.6.4) |
Score | 0 |
Code Size | 1570 Byte |
Status | WA |
Exec Time | 1302 ms |
Memory | 44264 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 | AC | 66 ms | 24356 KB |
subtask0_sample02.txt | AC | 65 ms | 24352 KB |
subtask0_sample03.txt | AC | 71 ms | 24304 KB |
subtask1_01.txt | AC | 212 ms | 44264 KB |
subtask1_02.txt | WA | 210 ms | 44188 KB |
subtask1_03.txt | WA | 67 ms | 24356 KB |
subtask1_04.txt | AC | 65 ms | 24352 KB |
subtask1_05.txt | AC | 66 ms | 24480 KB |
subtask1_06.txt | WA | 67 ms | 24484 KB |
subtask1_07.txt | WA | 240 ms | 39592 KB |
subtask1_08.txt | WA | 249 ms | 39524 KB |
subtask1_09.txt | WA | 256 ms | 39596 KB |
subtask1_10.txt | WA | 247 ms | 39596 KB |
subtask1_11.txt | WA | 255 ms | 39596 KB |
subtask1_12.txt | AC | 246 ms | 39592 KB |
subtask2_01.txt | AC | 1033 ms | 44196 KB |
subtask2_02.txt | WA | 1050 ms | 44256 KB |
subtask2_03.txt | WA | 828 ms | 24360 KB |
subtask2_04.txt | WA | 837 ms | 24348 KB |
subtask2_05.txt | WA | 882 ms | 24480 KB |
subtask2_06.txt | WA | 883 ms | 24484 KB |
subtask2_07.txt | WA | 1293 ms | 39584 KB |
subtask2_08.txt | WA | 1302 ms | 39588 KB |
subtask2_09.txt | WA | 1293 ms | 39584 KB |
subtask2_10.txt | WA | 1283 ms | 39580 KB |
subtask2_11.txt | WA | 1289 ms | 39584 KB |
subtask2_12.txt | WA | 1293 ms | 39584 KB |