[Baekjoon/๐ŸฅˆSilverโ…ก] 11725: ํŠธ๋ฆฌ์˜ ๋ถ€๋ชจ ์ฐพ๊ธฐ

์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

Intro

๋ฌธ์ œ์‚ฌ์ง„ ๋ฌธ์ œ์‚ฌ์ง„

๐Ÿ‘ฉ ๋ฌธ์ œ๋Š” bfs, dfs ๋‘๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋‘ ๋ฐฉ์‹์˜ ๊ณตํ†ต์ ์€ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ง์ „ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ๋…ธ๋“œ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


Algoritm๐Ÿ‘ฉโ€๐Ÿ’ป: dfs

#21.01.27
#11725: ํŠธ๋ฆฌ์˜ ๋ถ€๋ชจ ์ฐพ๊ธฐ

import sys
sys.setrecursionlimit(10**6)

def dfs(n):
  for i in lst[n-1]:
    if parent[i] == 0:
      parent[i] = n # ์ง์ „ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ๋กœ ์ง€์ •!
      dfs(i)

N = int(sys.stdin.readline())
lst = [[] for _ in range(N)]
parent = [0 for _ in range(N+1)]

for _ in range(N-1):
  n1, n2 = map(int, sys.stdin.readline().split())
  lst[n1-1].append(n2)
  lst[n2-1].append(n1)

dfs(1)

for i in parent[2:]:
  print(i)

๊ฒฐ๊ณผ


Algorithm๐Ÿ‘จโ€๐Ÿ’ป: bfs

#21.01.27
#11725: ํŠธ๋ฆฌ์˜ ๋ถ€๋ชจ ์ฐพ๊ธฐ

import sys

def bfs():
  global check
  queue = [1]
  while queue:
    p = queue.pop(0)
    for i in lst[p-1]:
      if parent[i] == 0:
        parent[i] = p # ์ง์ „ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ๋กœ ์„ค์ •!
        queue.append(i)
  

N = int(sys.stdin.readline())
lst = [[] for _ in range(N)]
parent = [0 for _ in range(N+1)]

for _ in range(N-1):
  n1, n2 = map(int, sys.stdin.readline().split())
  lst[n1-1].append(n2)
  lst[n2-1].append(n1)

bfs()

for i in parent[2:]:
  print(i)

๊ฒฐ๊ณผ

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์—ฌ๊ธฐ์„œ

๋!! ~(ห˜โ–พห˜~)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ