백준_BFS_바이러스_2606_파이썬

석준·2022년 8월 31일
0

백준_문제풀이

목록 보기
23/30
post-thumbnail

✅문제 요약

  1. n개의 컴퓨터가 있고 컴퓨터 별로 연결된 컴퓨터가 주어진다.
  2. 1번 컴퓨터에 바이러스가 걸렸을 때, 연결된 컴퓨터는 모두 바이러스에 감염된다.
  3. 감연된 컴퓨터의 수를 출력하라

✅문제 풀이

그래프 이론에서 BFS 개념을 이해하기에 가장 좋은 문제다.
Q에 1번을 담고 1번 컴퓨터가 연결된 컴퓨터를 Q에 담는다.
모두 탐색했으면 다음 Q에서 연결된 컴퓨터를 찾아 Q에 담는 반복작업을 하고, 총 탐색한 컴퓨터 수를 출력한다.

from collections import deque
import sys
input = sys.stdin.readline

n = int(input())
m = int(input())

# 컴퓨터 별 연결된 컴퓨터 번호를 담는 배열
graph = [[] for _ in range(n+1)]
visit = [0 for _ in range(n+1)]

# 컴퓨터는 양방향 연결이다
for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

answer = 0
# 1번 컴퓨터 Q에 담고 시작
Q = deque([1])
visit[1] = 1
while Q:
    now = Q.popleft()
    answer += 1
    for i in graph[now]:
        if not visit[i]:
            visit[i] = 1
            Q.append(i)

print(answer-1)
profile
파이썬 서버 개발자 지망생

0개의 댓글