๋ฐฑ์ค€ | Baekjoon

[๋ฐฑ์ค€][1260] DFS์™€ BFS | ํŒŒ์ด์ฌ

sungkshon 2024. 5. 13. 06:07
๋ฐ˜์‘ํ˜•

๐Ÿ‘‰ ๋ฌธ์ œ ๋ถ„์„

DFS๋กœ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ์™€ BFS๋กœ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ

๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ ์ •์  ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ๊ฒƒ์„ ๋จผ์ € ๋ฐฉ๋ฌธ

๋”์ด์ƒ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ด ์—†๋Š” ๊ฒฝ์šฐ ์ข…๋ฃŒ


๐Ÿ‘‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„

  1. ์ž…๋ ฅ ์ดˆ๊ธฐํ™”
  2. graph์ •๋ณด ์ž…๋ ฅ
  3. dfs
  4. bfs

๐Ÿ‘‰ ์ฝ”๋“œ

import sys

def dfs(idx):
    global visited
    visited[idx] = True #  ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” true
    print(idx, end = ' ')
    for next in range(1, n+1):
        if not visited[next] and graph[idx][next]:
            dfs(next)

def bfs():
    global q, visited  #  q:ํ
    while q:   #  ํ์˜ ์š”์†Œ๊ฐ€ ๋‚จ์•„์žˆ์„๋•Œ๊นŒ์ง€
        cur = q.pop(0)   #  ํ์˜ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋บด๋‚ธ๋‹ค
        print(cur, end = ' ')
        for next in range(1, n+1):  #  cur์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ์„ q์— ๋„ฃ์–ด์ค€๋‹ค
            if not visited[next] and graph[cur][next]:  # ๋ฐฉ๋ฌธ ๋œ์ ์ด ์—†๋Š”์ง€ ํ™•์ธ
                visited[next] = True  #  ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด True๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
                q.append(next)  #  ํ์˜ ๋งจ ๋์— ๋„ฃ์–ด์ค€๋‹ค.

#  ์ž…๋ ฅ ์ดˆ๊ธฐํ™”
input = sys.stdin.readline
n, m, v = map(int, input().split())

graph = [[False]*(n+1) for _ in range(n+1)]   #  (n+1)x(n+1) 2์ฐจ์› ๋ฐฐ์—ด
visited = [False] * (n+1)  #  1์ฐจ์› ๋ฐฐ์—ด

#  ๊ทธ๋ž˜ํ”„ ์ •๋ณด ์ž…๋ ฅ
for _ in range(m):
    a, b = map(int, input().split())
    graph[a][b] = True
    graph[b][a] = True

#  dfs
dfs(v)   #  v๋ถ€ํ„ฐ dfsํ•จ์ˆ˜ ์‹œ์ž‘ 
print()   #  ์ค„๋ฐ”๊ฟˆ์„ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ

#  bfs
visited = [False] * (n+1)   #  ๋ฐฉ๋ฌธ์„ ์•ˆํ–ˆ๋‹ค๊ณ  ์น˜๊ณ  ๋‹ค์‹œ bfs๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋‹ˆ๊นŒ ๋‹ค False๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
q = [v]   #  ํ์— v๋ฅผ ๋‹ด์•„์ค€๋‹ค. (v๋ถ€ํ„ฐ ์‹œ์ž‘ํ• ๊ฑฐ๋‹ˆ๊นŒ)
visited[v] = True   #  v๋ฅผ ์žฌ๋ฐฉ๋ฌธ ํ•˜์ง€ ์•Š๋„๋ก
bfs()


 
๐Ÿ‘‰ ์‹œ๊ฐ„ ๋ณต์žก๋„

O(n^2)

 

๐Ÿ‘‰ ํ‹€๋ฆฐ ์ด์œ 
์ ‘๊ทผ ๋ฐฉ์‹์ด ํ‹€๋ฆผ

์ด๋ก ์„ ๊ณต๋ถ€ํ•˜๊ณ  ํ’€์–ด๋ดค๋Š”๋ฐ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋‹ค.


๐Ÿ‘‰ ๋А๋‚€์  or ๊ธฐ์–ตํ• ์ •๋ณด

dfs์™€ bfs์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ์ตํ˜€๋‘์–ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 

 

๋ฐ˜์‘ํ˜•