[알고리즘] 백준 - 바이러스(python 파이썬)

hj·2021년 4월 17일
0

알고리즘

목록 보기
3/35
post-thumbnail

백준 - 바이러스

설명

  • DFS, 스택 이용
  • 입력으로 들어오는 그래프 연결 정보를 인접 리스트로 만든다.
  • 1번 컴퓨터와 연결된 컴퓨터들의 개수만 찾으면 된다.

풀이

n = int(input()) # 컴퓨터의 수
pair = int(input()) # 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수

graph = { key + 1 : [] for key in range(n) }
for i in range(pair):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

def dfs(start_v):
    discovered = []
    stack = [start_v]
    cnt = 0

    while stack:
        v = stack.pop()
        if v not in discovered:
            discovered.append(v)
            cnt += 1
            for w in graph[v]:
                stack.append(w)
    return cnt - 1

print(dfs(1))

0개의 댓글