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:]))
반응형