BOJ(백준) 2606번 바이러스 파이썬
2021. 3. 19. 15:05ㆍ개인 공부 공간/Algorithm
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
코드
import sys
r = sys.stdin.readline
N = int(r()) # 노드 수
M = int(r()) # 간선 수
edge = [[] for _ in range(N+1)]
for _ in range(M):
A,B = map(int,r().split())
edge[A].append(B)
edge[B].append(A)
for e in edge:
e.sort(reverse=True)
def virus():
v = []
stack = [1]
visit = [False for _ in range(N+1)]
while stack:
node = stack.pop()
if visit[node]:
pass
else:
v.append(node)
visit[node] = True
stack += edge[node]
return v
print(len(virus()) - 1)
해설
이전 문제인 DFS와 BFS [1260번]와 매우 유사하게 풀이하였다. 유일한 차이는 이 문제에서는 출력부분에서 DFS를 통한 연결된 시작점을 제외한 노드의 수를 출력하도록 했다는 점이다.
결과
'개인 공부 공간 > Algorithm' 카테고리의 다른 글
BOJ(백준) 1012번 유기농 배추 파이썬 (0) | 2021.03.19 |
---|---|
BOJ(백준) [2667번] 단지번호붙이기 파이썬 (0) | 2021.03.19 |
BOJ(백준) 1260번 DFS와 BFS 파이썬 (0) | 2021.03.19 |
BOJ(백준) 5430번 AC 파이썬 (0) | 2021.03.19 |
BOJ(백준) 1021번 회전하는 큐 파이썬 (0) | 2021.03.19 |