본문 바로가기
Algorithm

[BAEKJOON] 1260번: DFS와 BFS

by Y06 2021. 10. 26.

1260번 문제이다.

사진을 누르면 문제로 이동한다.

문제는 Python언어로 구현하였다.

from sys import stdin
n, m, v = map(int, stdin.readline().split())
matrix = [[0] * (n + 1) for _ in range(n + 1)]
for _ in range(m):
    line = list(map(int, stdin.readline().split()))
    matrix[line[0]][line[1]] = 1
    matrix[line[1]][line[0]] = 1

def bfs(start):
    visited = [start]
    queue = [start]
    while queue:
        n = queue.pop(0)
        for c in range(len(matrix[start])):
            if matrix[n][c] == 1 and (c not in visited):
                visited.append(c)
                queue.append(c)
    return visited

def dfs(start, visited):
    visited += [start]
    for c in range(len(matrix[start])):
        if matrix[start][c] == 1 and (c not in visited):
            dfs(c, visited)
    return visited

print(*dfs(v,[]))
print(*bfs(v))

'Algorithm' 카테고리의 다른 글

[BAEKJOON] 11401번: 이항 계수 3  (0) 2021.11.03
[BAEKJOON] 2178번: 미로탐색  (0) 2021.10.26
[BAEKJOON] 10828번: 스택  (0) 2021.09.30
[BAEKJOON] 1874번: 스택 수열  (0) 2021.09.30
[BAEKJOON] 1074번: Z  (0) 2021.09.27