Coding Test/백준
[백준] 2606번 바이러스 (python 파이썬)
uding9
2022. 2. 16. 23:42
반응형
깊이우선탐색(dfs)로 해결
n_computer = int(input()) # 컴퓨터의 수
n_connection = int(input()) # 연결의 수
# 빈 인접 행렬 생성
# 노드가 1부터 시작하므로 인덱스가 0인 경우 무시하고 1부터 시작하기 위해 +1 해줌
graph = [[] for _ in range(n_computer+1)]
# 연결된 컴퓨터의 번호 쌍 입력 받기
for i in range(n_connection):
idx, val = map(int, input().split())
# 인접 행렬 생성
graph[idx].append(val)
graph[val].append(idx)
visited = [False]*(n_computer+1)
def dfs(visited, v, graph):
visited[v] = True # 방문 표시
# 방문한 인덱스의 인접 리스트 접근
for i in graph[v]:
# 방문하지 않은 경우 방문함
if visited[i] == False:
dfs(visited, i, graph)
return visited
visited = dfs(visited, 1, graph)
print(sum(visited[2:]))
반응형