백준 2606 - 바이러스 [SILVER 3]

https://www.acmicpc.net/problem/2606

 

N개의 컴퓨터와 N개의 연관 관계가 있다.

1번 컴퓨터가 바이러스에 감염되었을 때, 1번 컴퓨터로 인해 몇 개의 컴퓨터가 바이러스에 감염되었는가?

BFS

매우 간단한 BFS 문제입니다.

특별한 조건 없이, 1번 컴퓨터로 인해 감염된 컴퓨터의 개수만 구하면 됩니다.

컴퓨터를 N+1의 리스트로 만들고, 연관 관계를 상호간으로 리스트에 넣어준 뒤

1번부터 시작하여 BFS로 순회하면서, 방문한 노드에 대한 정보를 기록하여

1번을 제외한, 방문한 적 있는 컴퓨터의 갯수만 나타내면 됩니다.

정답 코드

import sys

input = sys.stdin.readline

N = int(input())
route = [[] for _ in range(N+1)]

for i in range(int(input())):
    s, e = map(int, input().split())

    route[s].append(e)
    route[e].append(s)

Q = route[1].copy()
visited = [0] * (N+1)
visited[1] = 1

while Q:
    n = Q.pop(0)
    if not visited[n]:
        visited[n] = 1
        Q.extend(route[n])

print(sum(visited[2:]))

결과는 다음과 같다.

메모리 시간 코드 길이
31120KB 40ms 391B

'알고리즘' 카테고리의 다른 글

[Python] 백준 6064 - 카잉달력  (1) 2025.01.05
[Python] 백준 2630 - 색종이 만들기  (0) 2025.01.05
[Python] 백준 5525 - ioioi  (0) 2025.01.05
[Python] 백준 5439 - AC  (0) 2025.01.05
[Python] 백준 2579 - 계단오르기  (0) 2025.01.05

+ Recent posts