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
AC × 3
AC × 12
AC × 19
TLE × 8
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