[DFS/BFS] 1260번- DFS와 BFS

조은지·2021년 9월 2일
0

링크: DFS와 BFS

코드

from collections import deque

n,m,start = map(int, input().split())

graph=[[] for i in range(n+1)] 

visited=[False]*(n+1)

for i in range(m):
    s,e = map(int, input().split())
    graph[s].append(e)
    graph[e].append(s) #양방향

for line in graph:
    line.sort()
    
#dfs 함수
def dfs(start):
    visited[start]=True
    print(start, end=' ')
    
    for v in graph[start]:
        if visited[v]==False:
            dfs(v)

#bfs 함수
def bfs(start):
    queue = deque()
    visited[start] = True
    queue.append(start)
    
    while queue:
        v = queue.popleft()
        print(v,end=' ')
        for i in graph[v]:
            if visited[i]==False:
                visited[i]=True
                queue.append(i)
            
dfs(start)

visited=[False]*(n+1)
print()
bfs(start)

단순히 DFS와 BFS를 구현하면 되는 문제였다.

입력으로 한 줄에 연결되어 있는 두 정점을 주었기 때문에
인접 리스트 방식으로 바꿔주기 위한 처리 + 양방향 그래프로 변경해주었다.

그리고 리스트 정렬도 추가적으로 수행해 숫자가 작은 노드부터 탐색할 수 있도록 하였다. 굿~

0개의 댓글

관련 채용 정보