๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[BAEKJOON python] 1260_DFS์™€ BFS ๋ณธ๋ฌธ

๐Ÿฆฅ ์ฝ”ํ…Œ/BAEKJOON

[BAEKJOON python] 1260_DFS์™€ BFS

์ง•์ง•์•ŒํŒŒ์นด 2022. 10. 6. 16:41
728x90
๋ฐ˜์‘ํ˜•
๊ทธ๋ž˜ํ”„๋ฅผ DFS๋กœ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ์™€ BFS๋กœ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๋‹จ, ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ์—๋Š” ์ •์  ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ๊ฒƒ์„ ๋จผ์ € ๋ฐฉ๋ฌธํ•˜๊ณ , ๋” ์ด์ƒ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ด ์—†๋Š” ๊ฒฝ์šฐ ์ข…๋ฃŒํ•œ๋‹ค.

์ •์  ๋ฒˆํ˜ธ๋Š” 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€์ด๋‹ค.์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 1,000), ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ M(1 ≤ M ≤ 10,000), ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•  ์ •์ ์˜ ๋ฒˆํ˜ธ V๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

๋‹ค์Œ M๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ„์„ ์ด ์—ฐ๊ฒฐํ•˜๋Š” ๋‘ ์ •์ ์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.์–ด๋–ค ๋‘ ์ •์  ์‚ฌ์ด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ„์„ ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๊ฐ„์„ ์€ ์–‘๋ฐฉํ–ฅ
from collections import deque

n, m, v = map(int, input().split())

# 1. graph์™€ visited ๋ฆฌ์ŠคํŠธ
graph = [[0] * (n + 1) for _ in range(n + 1)]
visited = [False] * (n + 1)

# 2, grahp์— ๊ฐ„์„  ๋…ธ๋“œ ์ถ”๊ฐ€
for _ in range(m):  # m์€ ๊ฐ„์„  ๊ฐœ์ˆ˜
    x, y = map(int, input().split())
    graph[x][y] = 1  # ์„ ์ด ์–‘๋ฐฉํ–ฅ์ด๊ธฐ ๋•Œ๋ฌธ์— x->y y->x ๋‘˜๋‹ค ๊ฐ€๋Š” ๊ฑฐ๋กœ ์ƒ๊ฐ
    graph[y][x] = 1


def dfs(graph, v):
    visited[v] = True  # ํƒ์ƒ‰ ์‹œ์ž‘ ์ •์ ์ด v
    print(v, end=" ")

    for i in range(len(graph[v])):
        if graph[v][i] == 1 and visited[i] == False:
            dfs(graph, i)


def bfs(graph, v):
    queue = deque([v])

    visited = [False] * (n + 1)  #  ์ดˆ๊ธฐํ™”
    visited[v] = True  # ํƒ์ƒ‰ ์‹œ์ž‘ ์ •์ ์ด v

    while queue:  # ํ ๊ฐ’ ์žˆ์„ ๋•Œ๊นŒ์ง€
        v = queue.popleft()  # ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ pop! ์•ž ์š”์†Œ ์ œ๊ฑฐ
        print(v, end=" ")

        for i in range(len(graph[v])):
            if graph[v][i] == 1 and visited[i] == False:  # i ๋‹ค๋…€๊ฐ”๊ณ  ๋…ธ๋“œ ๊ฐ’ 1
                queue.append(i)
                visited[i] = True
    return visited


dfs(graph, v)
print()
bfs(graph, v)

# input
# 4 5 1
# 1 2
# 1 3
# 1 4
# 2 4
# 3 4

# output
# 1 2 4 3
# 1 2 3 4

 

 

728x90
๋ฐ˜์‘ํ˜•
Comments