DHistory

[Baekjoon] DFS/BFS - 2606 바이러스 본문

Computer Science/Algorithm

[Baekjoon] DFS/BFS - 2606 바이러스

ddu0422 2023. 9. 4. 13:56

문제

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍

www.acmicpc.net

 

풀이

import sys
from collections import deque

n = int(sys.stdin.readline().rstrip())
count = int(sys.stdin.readline().rstrip())
edges = []
visited = [False for _ in range(n + 1)]
for _ in range(count):
    a, b = map(int, sys.stdin.readline().rstrip().split())
    edges.append((a, b))


def solution(n, edges, visited):
    graphs = [[] for _ in range(n + 1)]

    for a, b in edges:
        graphs[a].append(b)
        graphs[b].append(a)

    queue = deque([1])
    visited[1] = True

    while queue:
        now = queue.popleft()

        for v in graphs[now]:
            if not visited[v]:
                visited[v] = True
                queue.append(v)

    return visited.count(True) - 1


print(solution(n, edges, visited))

 

채점 결과