バックアップ1260 DFSとBFS
1662 ワード
これはDFSとBFSのバックアップを練習できる問題です.
アイデアは次のとおりです.
1.入力したInputをグラフィックとしてマークする
ex)2,3番が1番ノードに接続されている場合、図[1]=2,3
図中の各ノードの接続ノードをノード番号に揃えます.
bfsとdfsをそれぞれ実行できる2つの関数を作成します.
bfsはキューを使用し,dfsは再帰方式を使用する.
from collections import deque
n, m , start = map(int, input().split())
graph = []
visit = set()
for i in range(n+1):
graph.append([])
for i in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
for i in graph:
i.sort(reverse=False)
def bfs(graph, start):
answer = []
visit = set()
queue = deque()
queue.append(start) #시작점
answer.append(start) # 시작점
visit.add(start)#시작점
while(queue):
poped = queue.popleft()
for i in graph[poped]: #꺼내진 친구와 연결된 노드들을 방문처리
if ( i in visit ):
continue
visit.add(i)
answer.append(i)
queue.append(i) # queue에 삽입
return answer
def dfs(graph, node, answer, visit):
visit.add(node)
answer.append(node)
for i in graph[node]:
if ( i not in visit):
dfs(graph,i,answer,visit)
answer2 = []
visit2 = set()
dfs(graph,start, answer2, visit2)
for i in answer2:
print(i , end=" ")
print("")
for i in bfs(graph,start):
print ( i , end = " ")
エラーの原因:なしReference
この問題について(バックアップ1260 DFSとBFS), 我々は、より多くの情報をここで見つけました https://velog.io/@tngus3722/백준-1260-DFS와-BFSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol