코딩테스트
[백준][파이썬]2060번: 바이러스
과아아앙
2021. 4. 6. 11:58
문제 출처 : www.acmicpc.net/problem/2606
내 풀이
보자마자 일전에 풀었던 양방향 그래프가 생각났다.
새로운 배열에 넣기보다 이전에 풀었던 것 처럼 dict를 이용해서 풀면 간단 할 것 같았다.
각 dict에 연결된 컴퓨터들을 집어넣고 연결된 것이 있는지 돌리니 간단히 해결 됐다.
n = int(input())
m = int(input())
computer = dict()
virus = []
check_virus = []
def check(y):
if y in computer:
for i in computer[y]:
if i not in virus and i not in check_virus:
virus.append(i)
return 0
for i in range(m):
x, y = map(int, input().split())
if x not in computer:
computer[x] = list()
if y not in computer:
computer[y] = list()
computer[x].append(y)
computer[y].append(x)
for i in computer[1]:
virus.append(i)
while virus:
a = virus.pop(0)
if a not in check_virus:
check_virus.append(a)
check(a)
print(len(check_virus) - 1)