📚 Algorithm

백준 2606 - 바이러스 (python)

Mu Gyum 2024. 7. 13. 14:29
# dfs
n = int(input())
com = [list(map(int, input().split())) for _ in range(int(input()))]
link = [[0 for _ in range(n + 1)] for _ in range(n + 1)]
addicted = [False] * (n + 1)
for a, b in com:
    link[a][b], link[b][a] = 1, 1

def dfs(com):
    global link, addicted
    # 다음으로 넘어가진 컴퓨터
    for i in range(1, n + 1):
        if not addicted[i] and link[com][i] == 1:
            addicted[i] = True
            dfs(i)
            
addicted[1] = True
dfs(1)
print(max(sum(addicted) - 1, 0))

각 컴퓨터 간의 link를 만든 뒤, dfs로 해결함