📚 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로 해결함