DFS와 BFS에 대해 기본적으로 공부를 한 후, 기본 문제들을 풀어보려고 한다.
백준 1260번 문제이다.
제출 코드
N,M,V=map(int,input().split()) #입력받아야할 변수 설정
matrix=[[0]*(N+1) for i in range(N+1)] #초기 matrix 0으로 선언
for i in range(M):
a,b = map(int,input().split())
matrix[a][b]=matrix[b][a]=1
visit_list=[0]*(N+1)
def dfs(V):
visit_list[V]=1 #방문한 지점은 1로 표시
print(V, end=' ')
for i in range(1,N+1):
if(visit_list[i]==0 and matrix[V][i]==1):
dfs(i)
def bfs(V):
queue=[V] #들려야 할 정점 저장
visit_list[V]=0 #방문한 지점 0으로 표시
while queue:
V=queue.pop(0)
print(V, end=' ')
for i in range(1, N+1):
if(visit_list[i]==1 and matrix[V][i]==1):
queue.append(i)
visit_list[i]=0
dfs(V) #출력
print()
bfs(V)
'코딩테스트' 카테고리의 다른 글
Programmers. 합승 택시 요금 (2021 KAKAO BLIND RECRUITMENT) (0) | 2021.11.08 |
---|---|
백준 5904 : moo 게임 (0) | 2021.10.25 |
백준 2577 : 숫자의 개수 (0) | 2021.10.18 |