-
15681번: 트리와 쿼리
트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) 이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V)
www.acmicpc.net
코드
import sys sys.setrecursionlimit(10**9) n, r, q = map(int, sys.stdin.readline().split(" ")) li = [[] for _ in range(n+1)] for _ in range(n-1): u, v = map(int, sys.stdin.readline().split(" ")) li[u].append(v) li[v].append(u) tree = [[] for _ in range(n+1)] def makeTree(currentNode, parent): for node in li[currentNode]: if node != parent: tree[currentNode].append(node) makeTree(node, currentNode) makeTree(r,-1) subtree = [[] for _ in range(n+1)] def countSubtreeNodes(currentNode): subtree[currentNode] = 1 for node in tree[currentNode]: countSubtreeNodes(node) subtree[currentNode] += subtree[node] countSubtreeNodes(r) for _ in range(q): query = int(sys.stdin.readline()) print(subtree[query])
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1786번 찾기 (파이썬) (0) 2022.01.06 [백준] 11723번 집합 (파이썬) (0) 2022.01.06 [백준] 9372번 상근이의 여행 (파이썬) (0) 2022.01.06 [백준] 1717번 집합의 표현 (파이썬) (0) 2022.01.06 [백준] 4803번 트리 (파이썬) (0) 2022.01.05