songining
article thumbnail

์œ„์˜ ์˜ˆ์ œ๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๋œ๋‹ค. (์–‘๋ฐฉํ–ฅ์ด๋ฏ€๋กœ)

matrix[i][j]๋ผ๋ฉด i์—์„œ j๋ฅผ ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉด 1, ์•„๋‹ˆ๋ฉด 0์ด๋‹ค. 

 

def dfs(v):  # v๊ฐ€ ์‹œ์ž‘์ 
    print(v, end=' ')
    visit[v] = 1  # ๋ฐฉ๋ฌธํ•œ ์  1๋กœ
    for i in range(1, n + 1):
        if visit[i] == 0 and matrix[v][i] == 1:  # ๋ฐฉ๋ฌธ์„ ์•„์ง ์•ˆํ–ˆ๊ณ  v์—์„œ i๋กœ ๊ฐˆ์ˆ˜์žˆ๋‹ค๋ฉด 
            dfs(i)  # i๋ฅผ ๋‹ค์‹œ v๋กœ ํ•˜๋ฉด์„œ dfs ๋กœ ํƒ์ƒ‰ 


def bfs(v):
    queue = [v]  # ๋“ค๋ ค์•ผ ํ•  ์  ์ €์žฅ
    visit[v] = 0  # ๋ฐฉ๋ฌธํ•œ ์  0์œผ๋กœ( dfs๋กœ ์ธํ•ด 1๋กœ ๋ฐ”๋€Œ์–ด ์žˆ์œผ๋ฏ€๋กœ)
    while queue:  # ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€
        v = queue.pop(0)
        print(v, end=' ')
        for i in range(1, n + 1):
            if visit[i] == 1 and matrix[v][i] == 1:
                queue.append(i) # bfs์ด๋ฏ€๋กœ ์ฒซ ์ ์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ํ™•์ธํ•  ๋•Œ๋งˆ๋‹ค queue์— push
                visit[i] = 0


n, m, v = map(int, input().split())
matrix = [[0] * (n + 1) for i in range(n + 1)]  # 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ

visit = [0 for i in range(n + 1)]
for i in range(m):
    x, y = map(int, input().split())
    # ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ •์ ์„ 1๋กœ ์„ค์ •
    matrix[x][y] = 1
    matrix[y][x] = 1
dfs(v)
print()
bfs(v)