[BOJ] 22856. ํŠธ๋ฆฌ ์ˆœํšŒ (๐Ÿฅ‡, ํŠธ๋ฆฌ)

lemythe423ยท2023๋…„ 12์›” 18์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
89/133
post-thumbnail

๐Ÿ”—

ํ’€์ด

์ค‘์œ„ ์ˆœํšŒ์ธ๋ฐ ์ด์ œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด ๋„์ค‘์— ์ค‘๋‹จํ•ด์•ผ ํ•œ๋‹ค๋Š” ์กฐ๊ฑด์ด ์žˆ๋‹ค.

์ด๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ -> ๋ถ€๋ชจ ๋…ธ๋“œ -> ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ๋ถ€๋ชจ ๋…ธ๋“œ์— ๋“ค์–ด๊ฐ€์ž๋งˆ์ž ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ ํ›„์— ๋‹ค์‹œ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ๋˜๋Œ์•„์˜ฌ ์ˆ˜ ์—†๋‹ค.

๊ทธ๋ฆผ ์ฒ˜๋Ÿผ 6์„ ๋ฐฉ๋ฌธํ•œ ํ›„์—๋Š” 3์œผ๋กœ ๋‹ค์‹œ ๋˜๋Œ์•„ ๊ฐ€์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ 3์—์„œ 1๋กœ ๋‹ค์‹œ ๋˜๋Œ์•„๊ฐ€์ง€๋Š” ์•Š๋Š”๋‹ค. 3์€ 1์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ 1์€ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด ์žˆ์–ด ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

# ํŠธ๋ฆฌ ์ˆœํšŒ

import sys
sys.setrecursionlimit(1000000)

def traversal(i, cnt):
    if tree[i][0] != -1:
        cnt = traversal(tree[i][0], cnt+1) + any(visited)
    visited[i] = False
    if tree[i][1] != -1:
        cnt = traversal(tree[i][1], cnt+1) + any(visited)
    return cnt
N = int(input())
tree = [[] for _ in range(N+1)]
for _ in range(N):
    a, *child = map(int, input().split())
    tree[a].extend(child)

visited = [True] * (N+1)
visited[0] = False
print(traversal(1, 0))
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€