반응형
문제 링크 : https://www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어��
www.acmicpc.net

> 풀이
BFS를 통해 탐색합시다
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
int N, M, cnt;
vector<int> nodes[101];
queue<int> bfs;
bool visited[101];
int main(void) {
scanf("%d %d", &N, &M);
for (int i = 0; i < M; i++) {
int a, b;
scanf("%d %d", &a, &b);
nodes[a].push_back(b);
nodes[b].push_back(a);
}
visited[1] = true;
bfs.push(1);
while (!bfs.empty()) {
int node = bfs.front();
bfs.pop();
for (int i = 0; i < nodes[node].size(); i++) {
int j = nodes[node][i];
if (visited[j] == false) {
visited[j] = true;
bfs.push(j);
}
}
}
for (int i = 1; i <= N; i++)
if (visited[i] == true) cnt++;
printf("%d", cnt - 1);
return 0;
}
(개발 환경 : vs code)
반응형
'알고리즘 (백준) > BOJ 길라잡이 (1)' 카테고리의 다른 글
| 백준 1149 (RGB거리) / C++ (0) | 2020.08.24 |
|---|---|
| 백준 1932 (정수 삼각형) / C++ (0) | 2020.07.30 |
| 백준 2178 (미로 탐색) / C++ (0) | 2020.07.22 |
| 백준 1697 (숨바꼭질) / C++ (0) | 2020.07.22 |
| 백준 2667 (단지번호붙이기) / C++ (0) | 2020.07.21 |