1seul357

[BOJ] DFS와 BFS 본문

알고리즘/백준

[BOJ] DFS와 BFS

1seul 2022. 1. 23. 01:24
def dfs(now):
    visited[now] = 1
    print(now, end=" ")
    for i in range(N+1):                            
        if visited[i] == 0 and node[now][i] == 1:  
            dfs(i)

def bfs(now):
    visited[now] = 1
    q.append(now)
    while q:                            
        n = q.pop(0)                    
        print(n, end=" ")
        for i in range(N+1):               
            if visited[i] == 0 and node[n][i] == 1:
                visited[i] = 1            
                q.append(i)               

N, M, V = map(int, input().split())
node = [[0]*(N+1) for _ in range(N+1)]     
visited = [0]*10000000                     
q = []

for i in range(M):
    a, b = map(int, input().split())
    node[a][b] = node[b][a] = 1                  

dfs(V)                                  
visited = [0]*10000000                     
print()
bfs(V)

문제

  1. 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성
  2. 번호가 작은 순서대로 방문

해결방법

  1. DFS와 BFS

주의사항

  • 처음에 dfs에서 범위 설정을 now부터 N+1까지 했는데, 출발 노드 번호가 1이 아닐 수 있으므로 0부터 N+1까지로 해야 한다.

'알고리즘 > 백준' 카테고리의 다른 글

[BOJ] 동전 0  (0) 2022.01.26
[BOJ] 소수 찾기  (0) 2022.01.23
[BOJ] 회의실 배정  (0) 2022.01.19
[BOJ] AC  (0) 2022.01.09
[BOJ] 스타트링크  (0) 2022.01.08