알고리즘

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

삶은겨란 2022. 4. 28. 18:22
n=int(input()) # 컴퓨터 개수 = 노드 개수
m=int(input()) # 연결된 컴퓨터 쌍 수 = 간선 개수

# 인접행렬
graph=[[0]*(n+1) for _ in range(n+1)] 

for _ in range(m):
    x,y=list(map(int,input().split()))
    graph[x][y]=graph[y][x]=1

visited=[0]*(n+1) # 방문 체크에서 연결되었다는 표시인 1의 개수를 세면된다


def dfs(v):
    visited[v]=1
    for i in range(n+1):
        if graph[i][v]==1 and visited[i]==0:
            dfs(i)

dfs(1) # 1번 노드에 연결된 노드의 개수만 구하면 된다.
print(sum(visited)-1) # 1번 컴퓨터는 빼준다.