2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어

www.acmicpc.net


DFS로 탐색

  1. 인접행렬과 방문흔적 남기는 배열을 생성한다
  2. 방문하지 않았고, 연결되있는 것들을 체크한다.
import sys

input = sys.stdin.readline
N = int(input())
answer = 0


def dfs(x):
    global answer
    for i in range(N+1):
        if matrix[x][i] == 1 and check[i] == 0:
            answer += 1
            matrix[x][i] = 0
            matrix[i][x] = 0
            check[i] = 1
            dfs(i)


check = [0]*(N+1)
status = [0]*(N+1)
matrix = [[0]*(N+1) for _ in range(N+1)]
pair_N = int(input())
for _ in range(pair_N):
    x, y = map(int, input().split())
    matrix[x][y] = 1
    matrix[y][x] = 1

check[1] = 1
dfs(1)

print(answer)

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기