Submission #1708246
Source Code Expand
import math N = int(input()) C = [[] for _ in range(N)] for _ in range(N - 1): x, y = [int(_) - 1 for _ in input().split()] C[x].append(y) C[y].append(x) log_N = int(math.log2(N)) + 1 dbl = [[-1] * log_N for _ in range(N)] dep = [0] * N # initialize queue = [(0, -1, 0)] # (node, parent, depth), root: 0 while len(queue) > 0: node, parent, depth = queue.pop() dep[node] = depth for edge in C[node]: if edge == parent: continue dbl[edge][0] = node queue.append((edge, node, depth + 1)) # doubling for j in range(1, log_N): for i in range(N): if dbl[i][j-1] == -1: continue dbl[i][j] = dbl[dbl[i][j-1]][j-1] j += 1 def LCA(a, b): def func(leaf, d): res = leaf for i in range(log_N): if (d >> i) & 1: res = dbl[res][i] i += 1 return res if dep[a] > dep[b]: a, b = b, a _a, _b = a, func(b, dep[b] - dep[a]) if _a == _b: return _a else: for i in range(log_N - 1, -1, -1): if dbl[_a][i] != dbl[_b][i]: _a = dbl[_a][i] _b = dbl[_b][i] return dbl[_a][0] # main Q = int(input()) for _ in range(Q): a, b = [int(_) - 1 for _ in input().split()] print(dep[a] + dep[b] - 2 * dep[LCA(a, b)] + 1)
Submission Info
Submission Time | |
---|---|
Task | D - 閉路 |
User | yuhi87star |
Language | Python (3.4.3) |
Score | 30 |
Code Size | 1437 Byte |
Status | TLE |
Exec Time | 2108 ms |
Memory | 48708 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 30 / 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 | 23 ms | 3572 KB |
subtask0_sample02.txt | AC | 18 ms | 3188 KB |
subtask0_sample03.txt | AC | 19 ms | 3192 KB |
subtask1_01.txt | AC | 1162 ms | 48328 KB |
subtask1_02.txt | AC | 1166 ms | 46280 KB |
subtask1_03.txt | AC | 18 ms | 3192 KB |
subtask1_04.txt | AC | 20 ms | 3188 KB |
subtask1_05.txt | AC | 27 ms | 3316 KB |
subtask1_06.txt | AC | 27 ms | 3316 KB |
subtask1_07.txt | AC | 1156 ms | 43416 KB |
subtask1_08.txt | AC | 1152 ms | 43208 KB |
subtask1_09.txt | AC | 1254 ms | 43208 KB |
subtask1_10.txt | AC | 1370 ms | 44488 KB |
subtask1_11.txt | AC | 1462 ms | 45636 KB |
subtask1_12.txt | AC | 1311 ms | 44228 KB |
subtask2_01.txt | TLE | 2108 ms | 46792 KB |
subtask2_02.txt | TLE | 2107 ms | 48708 KB |
subtask2_03.txt | AC | 1130 ms | 3316 KB |
subtask2_04.txt | AC | 1353 ms | 3316 KB |
subtask2_05.txt | AC | 1424 ms | 3700 KB |
subtask2_06.txt | AC | 1384 ms | 3700 KB |
subtask2_07.txt | TLE | 2107 ms | 43588 KB |
subtask2_08.txt | TLE | 2107 ms | 43460 KB |
subtask2_09.txt | TLE | 2106 ms | 45384 KB |
subtask2_10.txt | TLE | 2107 ms | 44744 KB |
subtask2_11.txt | TLE | 2108 ms | 45768 KB |
subtask2_12.txt | TLE | 2107 ms | 44356 KB |