본문으로 바로가기

백준 02606 - 바이러스

category BOJ 백준/DFS + BFS 2020. 11. 10. 18:53

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

 

2606번: 바이러스

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

www.acmicpc.net

 

고려사항

  • BFS
  • 1부터 시작이니 1은 카운트 하지 않는다.
  • 양방향 그래프임을 주의! => network[src]에 dst 넣고, 반대로도!
  • queue 에 넣는 순간 ++ans
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

bool visit[101];

int main() {
    int n, m, src, dst, dstSize, ans = 0;

    vector<int> network[101];
    queue<int> q;

    cin>>n>>m;
    for(int i=0;i<m;++i){
        cin>>src>>dst;
        network[src].push_back(dst);
        network[dst].push_back(src);
    }

    q.push(1);
    visit[1] = true;
    while(!q.empty()){
        src = q.front();
        q.pop();

        dstSize = network[src].size();
        for(int i=0;i<dstSize;++i){
            dst = network[src][i];
            if(!visit[dst]){
                q.push(dst);
                visit[dst] = true;
                ++ans;
            }
        }
    }

    cout<<ans;
    return 0;
}

'BOJ 백준 > DFS + BFS' 카테고리의 다른 글

백준 02178 - 미로 탐색  (0) 2020.12.20
백준 11724 - 연결 요소의 개수  (0) 2020.01.05
백준 10451 - 순열 사이클 (DFS)  (0) 2020.01.03