길민호(ethan.mino)
코딩수첩
길민호(ethan.mino)
전체 방문자
오늘
어제
  • 분류 전체보기 (215)
    • Computer Science (0)
    • Web (6)
      • CSS (0)
      • HTML (0)
    • Node.js (0)
    • Javascript (2)
    • Java (46)
      • Spring (27)
      • Jsp (0)
    • C\C++ (2)
    • Programming (0)
    • AI (0)
    • Database (7)
    • Git (5)
    • Algorithm (119)
      • Stack (0)
      • Queue (0)
      • Linked List (0)
      • Sort (0)
      • Simulation (27)
      • Recursion (0)
      • Backtracking (4)
      • Two Pointer (3)
      • Dynamic Programming (19)
      • Greedy (10)
      • Graph (3)
      • Dijkstra (1)
      • BFS\DFS (8)
      • Floyd (1)
      • MST (4)
      • Tree (4)
      • Binary Search (8)
      • Binary Search Tree (4)
    • IntelliJ (4)
    • Vscode (0)
    • Operating System (0)
    • 후기 (3)
    • 성장일지 (13)
    • 스터디 (7)
    • 설치 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ㅡ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
길민호(ethan.mino)

코딩수첩

Algorithm/BFS\DFS

[백준 2606번] 바이러스 (C++)

2022. 4. 1. 14:20

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

 

2606번: 바이러스

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

www.acmicpc.net


바이러스 문제는 네트워크 상에서 연결되어 있는 컴퓨터의 쌍을 입력 받아 인접 리스트에 저장하고, 인접 리스트를 이용하여 BFS를 수행하여 해결할 수 있습니다.

 

아래는 전체 코드입니다.

#include <bits/stdc++.h>
using namespace std;

bool vis[101];

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n, m; cin >> n >> m;
    vector<vector<int>> linked(n + 1);  // 인접 리스트를 이용
    for(int i = 0; i < m; i++){ // 인접한 쌍을 입력 받아 인접 리스트에 저장
        int a, b; cin >> a >> b;
        linked[a].push_back(b); 
        linked[b].push_back(a);
    }

    queue<int> q;
    q.push(1);
    vis[1] = true;

    while(!q.empty()){  //   BFS 수행
        int cur = q.front(); q.pop();
        for(int i = 0; i < linked[cur].size(); i++){
            if(vis[linked[cur][i]]) continue;   // 이미 방문한 경우, 방문하지 않음
            q.push(linked[cur][i]);
            vis[linked[cur][i]] = true;
        }
    }
    int cnt = 0;
    for(int i = 1; i <= n; i++) if(vis[i]) cnt++;
    cout << cnt - 1;
}

'Algorithm > BFS\DFS' 카테고리의 다른 글

[백준 16920번] 확장 게임 (C++)  (0) 2022.07.26
[백준 11725번] 트리의 부모 찾기 (C++)  (0) 2022.04.07
[백준 16928번] 뱀과 사다리 게임 (C++)  (0) 2022.04.06
[백준 11403번] 경로 찾기 (C++)  (0) 2022.04.06
[백준 11724번] 연결 요소의 개수 (C++)  (0) 2022.04.03
    'Algorithm/BFS\DFS' 카테고리의 다른 글
    • [백준 11725번] 트리의 부모 찾기 (C++)
    • [백준 16928번] 뱀과 사다리 게임 (C++)
    • [백준 11403번] 경로 찾기 (C++)
    • [백준 11724번] 연결 요소의 개수 (C++)
    길민호(ethan.mino)
    길민호(ethan.mino)
    💻 호기심 많은 서버 개발자 길민호입니다.

    티스토리툴바