반응형
문제링크:www.acmicpc.net/problem/2606
2606번: 바이러스
첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어
www.acmicpc.net
기본적인 bfs, dfs 문제입니다.
vector를 통해서 양방향 그래프를 구현하고 완전탐색을 통해서 연결된 갯수를 파악하면 되는 문제입니다.
기본중에 기본문제입니다.
이제 알고리즘을 입문하시는 분들이라면 그냥 코드자체를 외우듯이 이해하시면 될 것 같습니다.
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int n = 0, m = 0, result = 0;
vector <int> vec[101];
bool visited[101] = { 0, };
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n;
cin >> m;
for (int i = 0; i < m; i++) {
int t1, t2;
cin >> t1 >> t2;
vec[t1].push_back(t2);
vec[t2].push_back(t1);
}
queue <int> que;
visited[1] = 1;
que.push(1);
while (!que.empty()) {
int num = que.front();
que.pop();
for (int i = 0; i < vec[num].size(); i++) {
int next = vec[num][i];
if (visited[next] == 1) continue;
que.push(next);
visited[next] = 1;
result++;
}
}
cout << result << endl;
return 0;
}
반응형
'알고리즘 > BFS' 카테고리의 다른 글
[백준] 19238-스타트 택시(C++) (0) | 2021.04.10 |
---|---|
[백준] 1697- 숨바꼭질(C++) (0) | 2021.03.13 |
[백준] 1261-알고스팟(C++) (0) | 2020.08.25 |
[백준] 9019-DSLR (0) | 2020.08.10 |
[백준] 6593-상범 빌딩(C++) (0) | 2020.07.03 |