백준 1260 DFS와 BFS / python

이후띵·2021년 11월 24일
0

백준

목록 보기
8/12

  • 양방향 간선 (graph 입력시 주의)
  • 여러개의 같은 간선 주어질 수 있음 (방문 체크)
  • 정점 번호는 1~N
  • 방문할 정점이 여러개면, 작은 숫자부터 방문.
    -> 원래 이 순서로 진행돼서 의미 없음.
import sys
from collections import deque


def bfs(p):
    queue = deque()
    queue.append(p)
    visited_[p] = 1
    while queue:
        p = queue.popleft()
        print(p, end=" ")
        for idx in range(1, n + 1):
            if visited_[idx] == 0 and graph[p][idx] == 1:
                queue.append(idx)
                visited_[idx] = 1


def dfs(q):
    visited[q] = 1
    print(q, end=" ")
    for idx in range(1, n + 1):
        if visited[idx] == 0 and graph[q][idx] == 1:
            dfs(idx)


n, m, v = map(int, sys.stdin.readline().split())
visited = [0] * (n + 1)
visited_ = [0] * (n + 1)
graph = list(list(0 for _ in range(n + 1)) for _ in range(n + 1))
for _ in range(m):
    i, j = map(int, sys.stdin.readline().split())
    graph[i][j] = graph[j][i] = 1


dfs(v)
print()
bfs(v)
profile
이후띵's 개발일지

0개의 댓글