반응형
dfs랑 bfs는 정말 어렵다..(bfs가 더 어려움)
차근차근 계속 연습하면 되겠지??
N,M,V = map(int,input().split()) #정점, 간선갯수, 시작 번호
matrix = [[0]*(N+1) for _ in range(N+1)]
for i in range(M):
a,b=map(int,input().split())
matrix[a][b] = matrix[b][a] = 1
visited = [0]*(N+1)
def dfs(V):
visited[V] = 1
print(V,end =' ')
for i in range(1,N+1):
if visited[i] == 0 and matrix[V][i]==1:
dfs(i)
def bfs(V):
queue = [V]
visited[V] = 0
while queue:
V = queue.pop(0) #첫번째 데이터 꺼내서 V에 저장
print(V, end =' ')
for i in range(1,N+1):
if visited[i] == 1 and matrix[V][i] == 1:
queue.append(i)
visited[i] = 0
dfs(V)
print()
bfs(V)
정말 짧은데 이런 것 쯤은 언젠가 식은 죽 먹기가 되면 좋겠다.
bfs에서 while queue 부분 꼭 기억하기!! 까먹지 말기
P.S. 첫 코드 글이라니 신기하다.
반응형
'알고리즘 > dfs,bfs' 카테고리의 다른 글
[파이썬🐍] 백준 2583 : 영역 구하기 (0) | 2021.04.09 |
---|---|
[파이썬🐍] 백준 11724 : 연결 요소의 개수 (0) | 2021.04.08 |
[파이썬🐍] 백준 2606 : 바이러스 (0) | 2021.04.08 |
[파이썬🐍] 백준 2667 : 단지 번호 붙이기 (0) | 2021.04.07 |
[파이썬🐍] 백준 2178 : 미로 탐색 (0) | 2021.04.07 |
댓글