first commit
from old repository to a new repository
This commit is contained in:
65
boj/1260.py
Normal file
65
boj/1260.py
Normal file
@@ -0,0 +1,65 @@
|
||||
# n=정점 수, m=간선 수, v=시작점
|
||||
n,m,v=map(int,input().split())
|
||||
# 정점에 연결되는 간선을 넣을 이중 리스트(배열)
|
||||
node=[[0]*n for _ in range(n)]
|
||||
# 각 DFS, BFS 결과를 넣을 리스트
|
||||
dfs=[]
|
||||
bfs=[]
|
||||
|
||||
# 간선을 입력 받음
|
||||
for _ in range(m):
|
||||
a,b=map(int,input().split())
|
||||
# 해당 문제는 무방향(양방향) 그래프이므로, 양쪽 간선 배열에 모두 연결되었음을 표시해야 함.
|
||||
node[a-1][b-1]=node[b-1][a-1]=1
|
||||
|
||||
# - DFS 구현
|
||||
# 방문 여부를 담을 리스트를 모두 0으로 초기화
|
||||
visit=[0 for _ in range(n)]
|
||||
# 재귀를 이용하여 구현하기 위해 함수 선언
|
||||
def dfs_fun(now):
|
||||
# 방문한 정점을 리스트에 추가하고, 방문 여부를 표시
|
||||
dfs.append(now+1)
|
||||
visit[now]=1
|
||||
# 다음 정점 방문을 위해 반복
|
||||
for i in range(n):
|
||||
# 만약, 연결된 간선 중에 아직 방문하지 않은 정점이 있는 경우, 해당 정점을 방문하기 위해 재귀 실행
|
||||
if node[now][i]==1 and visit[i]==0:
|
||||
dfs_fun(i)
|
||||
|
||||
# DFS 탐색 시작점을 정의
|
||||
start=v-1
|
||||
# DFS 재귀 탐색 함수 호출
|
||||
dfs_fun(start)
|
||||
|
||||
# - BFS 구현
|
||||
# 첫 방문할 시작점을 정의
|
||||
now=v-1
|
||||
# 방문 여부를 담을 리스트를 0으로 초기화
|
||||
visit=[0 for _ in range(n)]
|
||||
# 현재 방문한 위치는 이미 방문한 것으로 함.
|
||||
visit[now]=1
|
||||
# 방문할 정점을 담을 리스트 변수 선언(큐 형태로 사용)
|
||||
queue=[]
|
||||
# 현재 방문한 위치는 큐에 추가
|
||||
queue.append(now)
|
||||
|
||||
# BFS 탐색 시작
|
||||
while len(queue)>0:
|
||||
# 현재 탐색 위치는 큐에서 빼오고, 방문한 정점 추가
|
||||
now=queue.pop(0)
|
||||
bfs.append(now+1)
|
||||
|
||||
# 다음 방문 위치를 큐에 추가하기 위해 반복
|
||||
for i in range(n):
|
||||
# 간선이 연결되어있지만, 아직 방문하지 않은 정점은 큐에 추가하여 다음에 방문할 수 있도록 함.
|
||||
if node[now][i]==1 and visit[i]==0:
|
||||
visit[i]=1
|
||||
queue.append(i)
|
||||
|
||||
# 결과 출력 (DFS, BFS 순)
|
||||
for i in range(len(dfs)):
|
||||
print(dfs[i],end=" ")
|
||||
print() # 줄바꿈을 위한 빈 print 함수 실행
|
||||
|
||||
for i in range(len(bfs)):
|
||||
print(bfs[i],end=" ")
|
||||
Reference in New Issue
Block a user