1260 : DFS 와 BFS

서희찬·2021년 10월 5일
0

백준

목록 보기
53/105

문제

코드

from collections import deque
import sys 
input = sys.stdin.readline

def dfs(v):
    print(v,end=' ')
    visited[v]=1

    for i in range(1,n+1):
        if visited[i]==0 and matrix[v][i]==1:
            dfs(i)

def bfs(v):
    queue =deque()
    queue.append(v)
    visited[v]=0
    while(queue):
        v = queue[0]
        print(queue.popleft(),end=' ')

        for i in range(1,n+1):
            if visited[i]==1 and matrix[v][i]==1:
                queue.append(i)
                visited[i]=0


n,m,v = map(int,input().split())
matrix = [[0]*(n+1) for _ in range(n+1)] #인접행렬 생성
visited = [0 for _ in range(n+1)]

for i in range(m):
    x,y = map(int,input().split())
    matrix[x][y]=1
    matrix[y][x]=1

dfs(v)
print()
bfs(v)

해설

DFS 와 BFS 기본 구현문제이다.
인접리스트말구 인접행렬로 그래프를 표현해줬는데
딕셔너리 리스트를 활용한 방법으로 풀 방법을 강구해 보자.

profile
부족한 실력을 엉덩이 힘으로 채워나가는 개발자 서희찬입니다 :)

0개의 댓글