Submission #7489134


Source Code Expand

def resolve():
    class LCA:
        def __init__(self,edges,root=0):
            self.edges=edges
            self.n=len(edges)
            self.maxLog=18
            self.parent=[[-1]*(self.maxLog+1) for _ in range(self.n)]
            self.depth=[0]*self.n
            self.__dfs(-1,root,0)
            self.__doubling()

        def __dfs(self,par,cur,dep):
            self.depth[cur]=dep
            self.parent[cur][0]=par
            for v in self.edges[cur]:
                if v!=par:
                    self.__dfs(cur,v,dep+1)

        def __doubling(self):
            for i in range(self.maxLog):
                for v in range(self.n):
                    if self.parent[v][i]!=-1:
                        self.parent[v][i+1]=self.parent[self.parent[v][i]][i]

        def get(self,a,b):
            if self.depth[a]>self.depth[b]:
                a,b=b,a
            for i in range(self.maxLog):
                if (self.depth[b]-self.depth[a])&(1<<i):
                    b=self.parent[b][i]
            if a==b:
                return b
            for i in reversed(range(self.maxLog-1)):
                if self.parent[a][i]!=self.parent[b][i]:
                    a=self.parent[a][i]
                    b=self.parent[b][i]
            return self.parent[a][0]

    n=int(input())
    edges=[[] for _ in range(n)]
    for _ in range(n-1):
        x,y=map(lambda i: int(i)-1,input().split())
        edges[x].append(y)
        edges[y].append(x)
    lca=LCA(edges)
    q=int(input())
    for i in range(q):
        a,b=map(lambda x: int(x)-1,input().split())
        print(lca.depth[a]+lca.depth[b]-lca.depth[lca.get(a,b)]+1)
resolve()

Submission Info

Submission Time
Task D - 閉路
User moni0627
Language PyPy3 (2.4.0)
Score 0
Code Size 1705 Byte
Status RE
Exec Time 2111 ms
Memory 113184 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 0 / 30 0 / 70
Status
AC × 2
WA × 1
WA × 10
RE × 2
AC × 2
WA × 15
TLE × 6
RE × 4
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 161 ms 38256 KB
subtask0_sample02.txt AC 161 ms 38256 KB
subtask0_sample03.txt WA 162 ms 38256 KB
subtask1_01.txt RE 695 ms 84896 KB
subtask1_02.txt RE 694 ms 84768 KB
subtask1_03.txt WA 161 ms 38256 KB
subtask1_04.txt WA 167 ms 38512 KB
subtask1_05.txt WA 215 ms 41328 KB
subtask1_06.txt WA 206 ms 40552 KB
subtask1_07.txt WA 824 ms 86560 KB
subtask1_08.txt WA 896 ms 91680 KB
subtask1_09.txt WA 863 ms 95264 KB
subtask1_10.txt WA 871 ms 97312 KB
subtask1_11.txt WA 902 ms 101920 KB
subtask1_12.txt WA 874 ms 99232 KB
subtask2_01.txt RE 688 ms 84768 KB
subtask2_02.txt RE 687 ms 84884 KB
subtask2_03.txt WA 1205 ms 58200 KB
subtask2_04.txt WA 1226 ms 58072 KB
subtask2_05.txt WA 1308 ms 60376 KB
subtask2_06.txt WA 1315 ms 60380 KB
subtask2_07.txt TLE 2016 ms 104480 KB
subtask2_08.txt TLE 2013 ms 105248 KB
subtask2_09.txt TLE 2110 ms 109088 KB
subtask2_10.txt TLE 2110 ms 110752 KB
subtask2_11.txt TLE 2111 ms 110624 KB
subtask2_12.txt TLE 2110 ms 113184 KB