Hikenny25

2606 - 바이러스 본문

baekjoon (solved.ac)/class 3 Solve

2606 - 바이러스

hikenny 2022. 10. 25. 21:16

https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

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

www.acmicpc.net

 

- 그래프 탐색 (BFS 사용)

 

import sys
input = sys.stdin.readline

from collections import deque

class Graph:
    def __init__(self, size):
        self.size = size
        self.matrix = [[0] * size for _ in range(size)]
        self.visited = [0] * size

    def addEdge(self, v1, v2):
        self.matrix[v1][v2] = self.matrix[v2][v1] = 1

    def bfs(self, start):
        q = deque([start])
        self.visited[start] = 1

        while len(q) != 0:
            k = q.pop()
            for i in range(self.size):
                if self.matrix[k][i] == 1 and self.visited[i] == 0:
                    q.appendleft(i)
                    self.visited[i] = 1
            
        
        print(sum(self.visited) - 1)
    
g = Graph(int(input()))
for _ in range(int(input())):
    n1, n2 = map(int, input().split())
    g.addEdge(n1-1, n2-1)

g.bfs(0)

웅오오아아아아아

첫 번째로 PS 풀 때 그래프랑 탐색 써봤음!!!

 

문제는 완전 간단하게 그래프 구현하고, 탐색 돌려서 방문한 정점 개수 구하는 문제인데

구현해보고 풀어본건 처음이라 재밌었다

 

 

혼자 그래프 공부하고 탐색 인터넷으로 찾아봤으면 어려울 것 같은데

디미고에서 배운게 도움이 엄청 됐다 히히

'baekjoon (solved.ac) > class 3 Solve' 카테고리의 다른 글

11726 - 2×n 타일링  (0) 2022.10.25
1260 - DFS와 BFS  (0) 2022.10.25
2579 - 계단 오르기  (0) 2022.10.25
1463 - 1로 만들기  (0) 2022.10.25
17219 - 비밀번호 찾기  (1) 2022.10.25
Comments