Submission #2520708


Source Code Expand

import sys
sys.setrecursionlimit(10 ** 7)

N = int(input())
G = [[] for i in range(N)]
for i in range(N-1):
    x, y = map(int, input().split())
    x, y = x-1, y-1
    G[x].append(y)
    G[y].append(x)

parent = [[] for i in range(N)]  # 親を2^k回辿って到達する頂点
depth = [None] * N
stack = []


def walk(i):
    rec_size = len(stack)
    depth[i] = rec_size

    # 親を2^k回辿る
    k = 0
    while 2**k <= rec_size:
        parent[i].append(stack[rec_size-2**k])
        k += 1

    stack.append(i)

    for ni in G[i]:
        if depth[ni] is not None:
            continue
        walk(ni)
    del stack[-1]


walk(0)

Q = int(input())
for i in range(Q):
    a, b = map(int, input().split())
    a, b = a-1, b-1
    if depth[a] > depth[b]:  # 深いほうが後ろ
        a, b = b, a

    depth_add = depth[a] + depth[b]
    depth_diff = depth[b] - depth[a]

    while depth_diff > 0:

        k = 1
        while 2**k < depth_diff:
            k += 1
        k -= 1

        b = parent[b][k]
        depth_diff -= 2**k

    while a != b:
        k = 1
        le = len(parent[a])

        while le > k and parent[a][k] != parent[b][k]:
            k += 1
        k -= 1
        a = parent[a][k]
        b = parent[b][k]

    print(depth_add - 2*depth[a] + 1)

Submission Info

Submission Time
Task D - 閉路
User AT274
Language Python (3.4.3)
Score 30
Code Size 1353 Byte
Status TLE
Exec Time 2113 ms
Memory 137500 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 17 ms 3188 KB
subtask0_sample02.txt AC 17 ms 3064 KB
subtask0_sample03.txt AC 17 ms 3064 KB
subtask1_01.txt AC 1672 ms 137500 KB
subtask1_02.txt AC 1650 ms 137500 KB
subtask1_03.txt AC 17 ms 3064 KB
subtask1_04.txt AC 18 ms 3188 KB
subtask1_05.txt AC 26 ms 3316 KB
subtask1_06.txt AC 27 ms 3572 KB
subtask1_07.txt AC 877 ms 37052 KB
subtask1_08.txt AC 868 ms 36148 KB
subtask1_09.txt AC 1046 ms 37052 KB
subtask1_10.txt AC 1151 ms 41108 KB
subtask1_11.txt AC 1226 ms 44488 KB
subtask1_12.txt AC 1141 ms 40164 KB
subtask2_01.txt TLE 2113 ms 137496 KB
subtask2_02.txt TLE 2113 ms 137480 KB
subtask2_03.txt AC 1104 ms 3316 KB
subtask2_04.txt AC 1212 ms 3316 KB
subtask2_05.txt AC 1722 ms 3700 KB
subtask2_06.txt AC 1909 ms 3956 KB
subtask2_07.txt TLE 2106 ms 37296 KB
subtask2_08.txt TLE 2106 ms 36412 KB
subtask2_09.txt TLE 2106 ms 37276 KB
subtask2_10.txt TLE 2106 ms 41360 KB
subtask2_11.txt TLE 2106 ms 44640 KB
subtask2_12.txt TLE 2105 ms 42220 KB