[백준 2606번 C++] 바이러스
2022. 7. 19. 21:03ㆍComputer Science/Algorithm
DFS 혹은 BFS 를 사용하여 풀 수 있는 간단한 문제.
https://www.acmicpc.net/problem/2606
BFS 를 사용한 풀이
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
const int MAX = 101;
int N, M;
int answer=0;
vector<int> network[MAX];
bool visited[MAX];
deque<int> Q;
int DFS(int v) {
Q.push_back(v);
visited[v] = true;
while (!Q.empty()) {
int cur = Q.front();
Q.pop_front();
for (int i = 0; i < network[cur].size(); i++) {
if (!visited[network[cur][i]]) {
Q.push_back(network[cur][i]);
visited[network[cur][i]] = true;
answer++;
}
}
}
return cnt;
}
int main() {
cin >> N >> M;
for (int i = 0; i < M; i++) {
int v1, v2;
cin >> v1 >> v2;
network[v1].push_back(v2);
network[v2].push_back(v1);
}
DFS(1);
cout << answer << " ";
}
DFS를 사용한 풀이
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
const int MAX = 101;
int N, M;
int answer = 0;
vector<int> network[MAX];
bool visited[MAX];
deque<int> Q;
void BFS(int v) {
visited[v] = true;
for (int i = 0; i < network[v].size() ; i++) {
if (!visited[network[v][i]]) {
visited[network[v][i]] = true;
answer++;
BFS(network[v][i]);
}
}
}
int main() {
cin >> N >> M;
for (int i = 0; i < M; i++) {
int v1, v2;
cin >> v1 >> v2;
network[v1].push_back(v2);
network[v2].push_back(v1);
}
BFS(1);
cout << answer << " ";
}
반응형
'Computer Science > Algorithm' 카테고리의 다른 글
[백준 1920번 C++] 수 찾기 (0) | 2022.07.21 |
---|---|
[백준 12851번 C++] 숨바꼭질 2 (0) | 2022.07.20 |
[백준 1303번 C++] 전쟁-전투 (0) | 2022.07.19 |
[백준 15649번 C++] N과 M(1) (0) | 2022.07.14 |
[백준 1260번 C++] DFS와 BFS (0) | 2022.07.14 |