728x90
2022.01.06
백준 2606 바이러스
## 2606
from collections import deque
N = int(input())
C = int(input())
arr = [[] for i in range(N+1)] # N+1 해준 이유는 숫자 인덱싱을 맞추려고
for i in range(C):
a, b = map(int,input().split())
arr[a].append(b)
arr[b].append(a)
visited = [] # 방문한 컴퓨터 번호
def BFS(x):
queue = deque([x])
visited.append(x)
while queue:
v = queue.popleft()
for i in arr[v]:
if i not in visited:
queue.append(i)
visited.append(i)
BFS(1)
print(len(visited) -1) # 1번 컴퓨터는 제외
queue는 while 문이 핵심 같다.popleft를 통해서 나온 수를 인덱스로 사용해서 큐에 다시 삽입하고
다시 반복을 통해서 queue를 공백으로 만드는 것이 재귀를 이용하는 DFS와의 차이처럼 느껴진다.
728x90
'Algorithm' 카테고리의 다른 글
백준 1157 파이썬 (0) | 2022.01.08 |
---|---|
백준 2667 파이썬 (BFS풀이) (0) | 2022.01.07 |
백준 1012 파이썬 (0) | 2022.01.04 |
BFS 알고리즘 정리 (0) | 2022.01.03 |
백준 2667 파이썬 (0) | 2022.01.01 |