[BaekJoon] 15591๋ฒ : MooTube
Updated:
15591๋ฒ : MooTube
๋ฌธ์ ๊ฐ ๋ณต์กํด์ ์ฝ๋๋ฐ๋ง ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ๋ค..
์ฃผ์ ์ฃผ์ ๊ธธ์ง๋ง ์ ๋ฆฌ ํด๋ณด์๋ฉด [1, 2] ๊ฐ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ 2๋ฒ ๋ ธ๋์์ ์ ์ฌ๋๊ฐ 1 ์ด์์ธ ๋ชจ๋ ๋ ธ๋์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ์ฌ๋๋ A ๋ ธ๋์ B ๋ ธ๋๋ฅผ ์๋ ๊ฐ์ ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ์ ๋ฌด๊ฒ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
๋ง์ฝ ์ด๋ ๊ฒ ์๊ธด ๊ทธ๋ํ๊ฐ ์๋ ๊ฒฝ์ฐ 1๊ณผ 3์ ์ ์ฌ๋๋ 2๊ฐ ๋๋ค.
1๊ณผ 3์ ์๋ ๊ฐ์ ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ์ ๋ฌด๊ฒ๋ 2์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก 1๊ณผ 4์ ์ ์ฌ๋๋ 3์ด ๋๋ค.
๋ ธ๋๊ฐ ์ ์ฌ๋๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ ธ๋๊ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์ฝ๊ฐ ๋ณํํ๋ฉด ๋๋ค.
์๋ฅผ ๋ค์ด 1๊ณผ 4์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ 3 + 4 ์ ๊ณ์ฐ์ ํ๊ฒ ๋๋ค.
์ด๋ ๋ํ๊ธฐ ๊ณ์ฐ์ ํ์ง ๋ง๊ณ ๊ฑฐ๋ฆฌ๋ฅผ ์ต์๊ฐ์ผ๋ก ๊ฐฑ์ ํด์ฃผ๋ฉด ๋๋ค.
import sys
from collections import deque
def BFS(N, graph, k, start):
visit = [False] * (N + 1)
queue = deque([[start, float('inf')]])
visit[start] = True
answer = 0
while queue:
node, USADO = queue.popleft()
for i in graph[node]:
visit_node, visit_USADO = i
min_USADO = min(USADO, visit_USADO)
if not visit[visit_node] and min_USADO >= k:
answer += 1
visit[visit_node] = True
queue.append([visit_node, min_USADO])
return answer
if __name__ == "__main__":
N, Q = map(int, input().split())
graph = {i + 1: [] for i in range(N)}
for _ in range(N - 1):
start, end, USADO = map(int, sys.stdin.readline().rsplit())
graph[start].append([end, USADO])
graph[end].append([start, USADO])
for _ in range(Q):
k, check = map(int, sys.stdin.readline().rsplit())
print(BFS(N, graph, k, check))
Leave a comment