๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜/DFS BFS

[Python] ๋ฐฑ์ค€ 24482 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—…

by JayAlex07 2023. 2. 14.

๐Ÿง‘‍๐Ÿ’ป [Python] ๋ฐฑ์ค€ 24482 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—…

Silver 2 - DFS

DFS ๋ฌธ์ œ์ด๋‹ค

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์œผ๋กœ, ํƒ์ƒ‰์„ ํ•  ๋•Œ๋งˆ๋‹ค 1์”ฉ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค

  • ์—ฐ๊ฒฐ์ด ์•„์˜ˆ ์•ˆ ๋˜์–ด ์žˆ์„ ๋•Œ์—๋Š” -1 ์ด๋‹ค
  • ๋‚ด๋ฆผ์ฐจ์ˆœ

 

๋ฌธ์ œํ’€์ด

  • DFS ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด ๋œ๋‹ค

 

์ฝ”๋“œ

import sys

sys.setrecursionlimit(10 ** 6)
input = sys.stdin.readline

def dfs(start, count):
    visited[start] = count

    for cur in graph[start]:
        if visited[cur] == -1:
            dfs(cur, count + 1)


N, M, start = map(int, input().split())

visited = [-1] * (N + 1)

graph = [[] for _ in range(N + 1)]
for _ in range(M):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

for node in graph:
    node.sort(reverse=True)

stack = []

dfs(start, 0)

for i in range(1, len(visited)):
    print(visited[i])