https://www.acmicpc.net/problem/25516
from collections import deque
n, k = map(int, input().split())
gra = [[] for _ in range(n)]
for _ in range(n-1):
a, b = map(int, input().split())
gra[a].append(b)
gra[b].append(a)
isapple = list(map(int, input().split()))
visit = [0] * n
def bfs(start):
q = deque()
q.append((start, 0)) # (현재 노드, 깊이)
visit[start] = 1
ans = 0 # 사과 개수
if isapple[start] == 1:
ans += 1
while q:
current, depth = q.popleft()
if depth >= k: # 깊이가 k를 넘으면 종료
continue
for next_node in gra[current]:
if visit[next_node] == 0:
visit[next_node] = 1
q.append((next_node, depth + 1))
if isapple[next_node] == 1:
ans += 1
print(ans) # 결과 출력
bfs(0)
'알고리즘 문제풀이' 카테고리의 다른 글
돌다리[백준 12761] (0) | 2025.01.28 |
---|---|
너구리 구구[백준 18126] (1) | 2025.01.28 |
영상처리[백준 21938] (0) | 2025.01.27 |
현수막[백준 14716] (0) | 2025.01.26 |
숨바꼭질[백준 6118] (0) | 2025.01.26 |