본문으로 바로가기

백준 02606 - 바이러스

category BOJ 백준DFS + BFS 4년 전

출처 : 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