For Programmer
백준 15681번 파이썬 문제풀이(트리와 쿼리) 본문
728x90
간단한 트리문제이다. 0으로 이루어진 리스트를 하나 선언 후 dfs를 돌면서 하위 재귀에서 탐색한 개수를 계속 더해주면서 리턴 해주면 된다.
import sys
sys.setrecursionlimit(150000)
input = sys.stdin.readline
# dfs로 자식노드의 개수 구하기
def dfs(cur):
child_count[cur] = 1
visited[cur] = True
for nxt in graph[cur]:
if not visited[nxt]:
child_count[cur] += dfs(nxt) #하위재귀에서 탐색한 개수를 계속 더해주면서 그 값을 리턴
return child_count[cur]
N, R, Q = map(int, input().split()) # 정점의 수 , 루트 번호 , 쿼리의 수
graph = [[] for _ in range(N + 1)]
for _ in range(N - 1):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
visited = [False] * (N + 1) # 방문처리
child_count = [0] * (N + 1) # 한 노드 v 부터 자식노드의 개수를 저장할 리스트
dfs(R) # dfs를 정점 R부터 돈다.
for _ in range(Q):
q = int(input().rstrip())
print(child_count[q])
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 11437번 파이썬 문제풀이(LCA) (0) | 2022.03.23 |
---|---|
백준 1967번 파이썬 문제풀이(트리와 지름) (0) | 2022.03.23 |
SWEA 1240번 파이썬 문제풀이(단순 2진 암호코드) (0) | 2022.03.23 |
백준 11725번 파이썬 문제풀이(트리의 부모 찾기) (0) | 2022.03.23 |
백준 1726번 파이썬 문제풀이(로봇) (0) | 2022.03.22 |
Comments