ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준] 2606번 바이러스 (python 파이썬)
    Coding Test/백준 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:]))
    반응형

    'Coding Test > 백준' 카테고리의 다른 글

    [백준] 2667번 단지번호붙이기 (python 파이썬)  (0) 2022.02.16

    댓글

Designed by Tistory.