문제 출처 : 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)
'코딩테스트' 카테고리의 다른 글
[백준][파이썬]11724번: 연결 요소의 개수 (0) | 2021.04.07 |
---|---|
[백준][파이썬]1966번: 프린터 큐 (0) | 2021.04.07 |
[백준][파이썬]1012번: 유기농 배추 (0) | 2021.04.06 |
[백준][파이썬]17413번: 단어 뒤집기 2 (0) | 2021.03.31 |
[백준][파이썬]1138번: 한 줄로 서기 (0) | 2021.03.31 |