1import sys
2sys.setrecursionlimit(10**6)
3input = sys.stdin.readline
4N, R, Q = map(int, input().split())
5G = [[] for _ in range(N)]
6cnt = [1]*N
7visited = [False]*N
8
9for _ in range(N-1):
10 a, b = map(int, input().split())
11 G[a-1].append(b-1)
12 G[b-1].append(a-1)
13
14def dfs(node):
15 visited[node] = True
16
17 for i in G[node]:
18 if not visited[i]:
19 cnt[node] += dfs(i)
20 return cnt[node]
21
22dfs(R-1)
23
24for _ in range(Q):
25 print (cnt[int(input())-1])
- 혼자 풀었다!
- 서브트리에 속한 정점의 수를 memoization해놓고 쿼리마다 index의 값을 출력하면 된다
- sys.stdin.readline 안써서 시간 초과 한 번
- recursionlimit 안 늘려서 런타임 에러 한 번
- python3 안 쓰고 pypy3 써서 메모리 초과 한 번
- 총 3번 틀렸다