-
[백준 1260번] DFS와 BFSCoding Test/백준 2021. 1. 4. 21:33
# 문제
내 풀이
from collections import deque import sys input = sys.stdin.readline # 조금 더 빠르게 입력 받기 n, m, v = map(int, input().split()) graph = [[] for _ in range(n + 1)] for i in range(m): n1, n2 = map(int, input().split()) graph[n1].append(n2) graph[n2].append(n1) # graph의 각각 노드에 대하여 인접한 노드 정보를 오름차순으로 정렬 for i in range(n + 1): graph[i].sort() dfs_visited = [False] * (n + 1) # dfs 방문 정보를 담을 배열 생성 bfs_visited = [False] * (n + 1) # bfs 방문 정보를 담을 배열 생성 # dfs 정의 def dfs(visited, graph, node): visited[node] = True print(node, end=' ') for i in graph[node]: if not visited[i]: dfs(visited, graph, i) # bfs 정의 def bfs(visited, graph, node): queue = deque([node]) visited[node] = True while queue: e = queue.popleft() print(e, end=' ') for i in graph[e]: if not visited[i]: queue.append(i) visited[i] = True dfs(dfs_visited, graph, v) print() bfs(bfs_visited, graph, v)
고민하는 점
그래프 데이터를 인접한 노드 정보를 저장하는 식으로 받았는데, 더 효율적으로 입력을 받을 수 있는 방법이 없을지 고민된다.
'Coding Test > 백준' 카테고리의 다른 글
[백준 1012번] 유기농 배추 (0) 2021.01.04 [백준 2667번] 단지번호붙이기 (0) 2021.01.04 [백준 10773번] 제로 (0) 2021.01.04 [백준 1932번] 정수 삼각형 (0) 2020.11.21 [백준 18353번] 병사 배치하기 (0) 2020.11.17