Submission #2522692
Source Code Expand
#define _USE_MATH_DEFINES #include <cstdio> #include <cstdlib> #include <iostream> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> using namespace std; const int MAX_LOG_V = 20; const int MAX = 1e5+1; int depth[MAX]; int dist[MAX]; int parent[MAX_LOG_V][MAX]; int root; vector<int> G[MAX]; void dfs(int v, int p, int d){ depth[v] = d; parent[0][v] = p; 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]){ v = parent[k][v]; u = parent[k][u]; } } return parent[0][u]; } int main(){ int N; cin >> N; for(int i = 0; i < N - 1; i++){ int x, y; cin >> x >> y; x--; y--; if(x > y){ swap(x, y); } G[x].push_back(y); } init(N); int Q; cin >> Q; for(int i = 0; i < Q; i++){ int x, y; cin >> x >> y; x--; y--; int p = lca(x, y); cout << depth[y] - depth[p] - depth[p] + depth[x] + 1 << endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | monolith |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1612 Byte |
Status | WA |
Exec Time | 334 ms |
Memory | 20864 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 | 4 ms | 10496 KB |
subtask0_sample02.txt | AC | 4 ms | 10496 KB |
subtask0_sample03.txt | AC | 4 ms | 10496 KB |
subtask1_01.txt | AC | 83 ms | 20224 KB |
subtask1_02.txt | AC | 84 ms | 20224 KB |
subtask1_03.txt | WA | 4 ms | 10496 KB |
subtask1_04.txt | WA | 4 ms | 10496 KB |
subtask1_05.txt | WA | 4 ms | 10496 KB |
subtask1_06.txt | WA | 4 ms | 10496 KB |
subtask1_07.txt | WA | 82 ms | 12416 KB |
subtask1_08.txt | WA | 84 ms | 12416 KB |
subtask1_09.txt | WA | 82 ms | 12544 KB |
subtask1_10.txt | WA | 82 ms | 12544 KB |
subtask1_11.txt | WA | 81 ms | 12416 KB |
subtask1_12.txt | WA | 86 ms | 12416 KB |
subtask2_01.txt | AC | 311 ms | 20864 KB |
subtask2_02.txt | AC | 303 ms | 20864 KB |
subtask2_03.txt | WA | 209 ms | 10624 KB |
subtask2_04.txt | WA | 211 ms | 10624 KB |
subtask2_05.txt | WA | 235 ms | 10752 KB |
subtask2_06.txt | WA | 230 ms | 10752 KB |
subtask2_07.txt | WA | 320 ms | 12672 KB |
subtask2_08.txt | WA | 325 ms | 12672 KB |
subtask2_09.txt | WA | 324 ms | 12672 KB |
subtask2_10.txt | WA | 324 ms | 12672 KB |
subtask2_11.txt | WA | 330 ms | 12672 KB |
subtask2_12.txt | WA | 334 ms | 12672 KB |