반응형
https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net

import sys
from collections import deque
n = int(input())
m = int(input())
graph = [ [] for i in range(n+1)] # 각각의 컴퓨터마다 연결된 노드 정보
visited = [ False for i in range(n+1)] # 방문 여부
for i in range(m): # 그래프에 경로 입력하기
a,b = map(int, sys.stdin.readline().rstrip().split(" "))
graph[a].append(b)
graph[b].append(a)
# 결과 [[], [2, 5], [1, 3, 5], [2], [7], [1, 2, 6], [5], [4]] 1번은 2,5번과 연결, 2번은 1,3,5번과 연결......
q = deque([1]) # 1번 컴퓨터부터 시작 [현재 위치 = 1]
visited[1] = True
ans = 0
while q: # 경로 따라가며 지나간 길 표시 및 정답 세기 [q에 아무것도 없을 때까지]
now = q.popleft() # 현재 위치를 꺼내면서 제거
for i in graph[now]: # 현재 위치의 연결 노드를 훑으면서 방문하지 않은 부분 q에 추가 및 방문 표시
if visited[i] == False: # 방문하지 않으면
visited[i] = True # 방문 표시 후
q.append(i) # q에 추가
ans = ans+1 # 개수 추가
print(ans)
입력의 첫줄에는 총 컴퓨터의 개수, 둘째 줄에는 연결된 짝의 개수이다.
셋째 줄 부터는 연결된 짝의 정보가 입력된다.
따라서
1. 모든 컴퓨터의 각각의 경우마다 연결된 컴퓨터의 정보를 리스트에 넣는다.
2. 첫 번째 컴퓨터부터 차례대로 따라가면서 방문 여부를 체크를 한다. (+ 정답 개수 더하기)
3. 더이상 새롭게 방문할 컴퓨터가 없을 때까지 2를 반복한다.
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 1002번 : 터렛 (python 파이썬) (0) | 2024.04.18 |
---|---|
[백준] 1932번 : 정수 삼각형 (python 파이썬) (0) | 2023.01.24 |
[백준] 1931번 : 회의실 배정 (python 파이썬) (0) | 2022.12.25 |
[백준] 11718번 : 그대로 출력하기 (python 파이썬) [입력 횟수가 정해지지 않을 때] (0) | 2022.12.24 |
[백준] 5430번 : AC (python 파이썬) (0) | 2022.06.04 |