카테고리 없음
[백준] 2606 바이러스(Python)
ziasu
2021. 10. 12. 19:57
반응형
1. 생각정리
- 문제를 좀 풀다 보니까 대충 감은 오는 것 같다
- 연결 정보는 이차원 리스트에 (1행에 1과 연결된 요소들 다 넣기, 2행에 2와 연결된 요소들 다 넣기...)의 느낌으로 입력받고, n+1 크기의 일차원 리스트를 통해 바이러스에 걸리는 것을 확인했는지 여부를 체크해준다
- 컴퓨터의 수가 적으므로, DFS로 모든 연결정보를 탐색하고, visited정보를 바꿀 때마다 결괏값+=1 해주어 최종 바이러스 걸린 컴퓨터 개수를 도출한다
2. 코드 구현
from collections import deque
#컴퓨터의 수 1<=n<=100
n = int(input())
#연결 수
m = int(input())
#m만큼 연결 정보
mapp = [[] for _ in range(n+1)]
visited = [False]*(n+1)
for _ in range(m):
x,y = map(int, input().split())
mapp[x].append(y)
mapp[y].append(x)
for i in mapp:
i.sort()
def bfs():
result = 0
q=deque([1])
while q:
temp = q.popleft()
if not visited[temp]:
visited[temp] = True
result+=1
for i in mapp[temp]:
if not visited[i]:
q.append(i)
print(result-1)
bfs()
반응형