티스토리 뷰

www.acmicpc.net/problem/2606

 

2606번: 바이러스

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

www.acmicpc.net

 

[DFS]

 

import sys

n = int(sys.stdin.readline().rstrip())
m = int(sys.stdin.readline().rstrip())
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)

for _ in range(m):
    a, b = map(int, sys.stdin.readline().rstrip().split())
    graph[a].append(b)
    graph[b].append(a)


def dfs(vertex):
    # 현재 노드 방문
    visited[vertex] = True

    # 방문하지 않은 인접 노드 방문
    for v in graph[vertex]:
        if not visited[v]:
            visited[v] = True
            dfs(v)


dfs(1)

# 1번을 통해 바이러스 걸린 컴퓨터 출력 (즉, 1번 컴퓨터는 제외)
print(visited.count(True) - 1)

 

[BFS]

 

import sys
from collections import deque

n = int(sys.stdin.readline().rstrip())
m = int(sys.stdin.readline().rstrip())
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)

for _ in range(m):
    a, b = map(int, sys.stdin.readline().rstrip().split())
    graph[a].append(b)
    graph[b].append(a)


def bfs(start):
    queue = deque()
    # 현재 노드 방문
    queue.append(start)
    visited[start] = True

    while queue:
        now = queue.popleft()

        # 방문하지 않은 인접 노드 방문
        for v in graph[now]:
            if not visited[v]:
                queue.append(v)
                visited[v] = True


bfs(1)

# 1번을 통해 바이러스 걸린 컴퓨터 출력 (즉, 1번 컴퓨터는 제외)
print(visited.count(True) - 1)

'알고리즘 문제풀이 > BOJ' 카테고리의 다른 글

[BOJ] DFS/BFS - DFS와 BFS  (0) 2020.09.25
[BOJ] DFS/BFS - 1012 유기농 배추  (0) 2020.09.25
[BOJ] DP - 2839 설탕 배달  (0) 2020.09.24
[BOJ] DP - 14697 방 배정하기  (0) 2020.09.24
[BOJ] DP - 10870 피보나치 수 5  (0) 2020.09.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함