코딩하는 해맑은 거북이
[Python] 바이러스 - 백준 (BFS) 본문
해당 글은 백준 2606번 문제 '바이러스'를 다룬다.
문제
https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
설명
해당 문제는 DFS/BFS로 풀 수 있다. 해당 글은 BFS 알고리즘으로 해당 문제를 해결하였다.
입력에 맞게 graph를 구성해준 후, 출발점 1에서부터 연결된 모든 노드에게 방문하고,
방문된 횟수의 총합에서 출발점 1을 제외한 값(-1)을 출력해준다.
코드
from collections import deque
computers = int(input())
networks = int(input())
graph = [[] for _ in range(computers+1)]
visited = [0]*(computers+1)
for i in range(networks):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
def bfs(graph, start):
queue = deque([start])
visited[start] = 1
while queue:
now = queue.popleft()
for i in graph[now]:
if visited[i] == 0:
queue.append(i)
visited[i] = 1
return sum(visited)-1
print(bfs(graph, 1))
'코딩테스트' 카테고리의 다른 글
[Python] 가장 긴 증가하는 부분 수열 - 백준 (DP) (0) | 2023.01.11 |
---|---|
[Python] 유기농 배추 - 백준 (DFS) (0) | 2023.01.11 |
[Python] 경로 찾기 - 백준 (최단경로) (0) | 2023.01.10 |
[Python] 안전 영역 - 백준 (DFS) (0) | 2023.01.09 |
[Python] 스택 수열 - 백준 (0) | 2023.01.09 |
Comments