-
백준(BeakJoon)_1260_DFS와BFSPython/Coding_Problems 2022. 12. 18. 12:05
# DFS를 재귀로 풀었을 때
from collections import deque def DFS(graph, visited, start_node): visited[start_node] = True print(start_node, end=" ") for i in graph[start_node]: if not visited[i]: DFS(graph,visited,i) def BFS(graph, visited, start_node): queue = deque() queue.append(start_node) # 노드를 qeue에 넣어준다 visited[start_node] = True while queue: current_node = queue.popleft() print(current_node, end=" ") for n in graph[current_node]: if not visited[n]: queue.append(n) visited[n] = True if __name__ == "__main__": node, line, start_node = map(int, input().split()) graphs = [[] for _ in range(node+1)] for _ in range(line): n1, n2 = map(int, input().split()) graphs[n1].append(n2) graphs[n2].append(n1) # 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문이라는 지문이 있어서 각각의 노드들을 오름차순으로 정렬 for graph in graphs: # 오름차순 정렬 graph.sort() dfs_visited = [False] * (node+1) bfs_visited = [False] * (node+1) DFS(graphs, dfs_visited, start_node) print() BFS(graphs, bfs_visited, start_node)
# DFS를 스택으로 풀었을 때
from collections import deque def DFS(graph, visited, start_node): stack = deque() stack.append(start_node) while stack: s = stack[-1] stack.pop() if not visited[s]: print(s, end=" ") visited[s] = True for node in graph[s]: if not visited[node]: stack.append(node) def BFS(graph, visited, start_node): queue = deque() queue.append(start_node) # 노드를 qeue에 넣어준다 visited[start_node] = True while queue: current_node = queue.popleft() print(current_node, end=" ") for n in graph[current_node]: if not visited[n]: queue.append(n) visited[n] = True if __name__ == "__main__": node, line, start_node = map(int, input().split()) graphs = [[] for _ in range(node+1)] for _ in range(line): n1, n2 = map(int, input().split()) graphs[n1].append(n2) graphs[n2].append(n1) dfs_graph = [sorted(graph, reverse=True) for graph in graphs] bfs_graph = [sorted(graph) for graph in graphs] dfs_visited = [False] * (node+1) bfs_visited = [False] * (node+1) DFS(dfs_graph, dfs_visited, start_node) print() BFS(bfs_graph, bfs_visited, start_node)
'Python > Coding_Problems' 카테고리의 다른 글
백준(BaekJoon) - 적록색약(10026) (0) 2023.01.20 프로그래머스(Programmers)_Level2_올바른괄호 (0) 2022.12.10 프로그래머스(Programmers)_Level1_같은숫자는싫어 (0) 2022.12.10