baekjoon

[백준/BOJ] 1260번 DFS와 BFS (Python)

riley_dev 2021. 1. 30. 20:59

[백준/BOJ] 1260번 DFS와 BFS

www.acmicpc.net/problem/1260

 

1260번: DFS와 BFS

첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사

www.acmicpc.net

이 문제는 dfs와 bfs문제의 가장 기본문제 같다.

 

Python code

더보기
def dfs(v, n, matrix, check):
  check[v]=True
  print(v, end=' ')
  for i in range(1,n+1):
    if not check[i] and matrix[v][i]==1:
      dfs(i, n, matrix, check)

def bfs(v, n, matrix, check):
  queue=[v]
  check[v]=True
  while queue:
    v=queue.pop(0)
    print(v, end=' ')
    for i in range(1, n+1):
      if not check[i] and matrix[v][i]==1:
        queue.append(i)
        check[i]=True

n, m, v=map(int, input().split())
matrix=[[0] * (n + 1) for _ in range(n + 1)]
for _ in range(m):
  a,b=map(int, input().split())
  matrix[a][b] = 1
  matrix[b][a] = 1

dfs(v, n, matrix, [False]*(n+1))
print()
bfs(v, n, matrix, [False]*(n+1))