백준 단계별로 풀어보기[DFS와 BFS] 바이러스
https://www.acmicpc.net/problem/2606
[풀이]
DFS를 이용.
[코드]
#include <iostream>
#include <algorithm>
#include <queue>
#include <string>
using namespace std;
int n, m, cnt = 0; //정점의 개수, 간선의 개수, 시작 정점
int adj[101][101];
bool isVisited[101] = { false, };
queue<int> q;
void dfs(int v) {
isVisited[v] = true;
cnt++;
for (int i = 1; i <= n; i++)
if (adj[v][i] == 1 && !isVisited[i])
dfs(i);
}
int main() {
//dfs
cin >> n >> m; //컴퓨터의 개수, 연결된 컴퓨터 쌍 수
int a, b;
for (int i = 1; i <= m; i++) {
cin >> a >> b;
adj[a][b] = 1;
adj[b][a] = 1;
}
dfs(1);
cout << cnt-1;
return 0;
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[기출 하] 깨알나라 신문 기사 (0) | 2021.08.26 |
---|---|
[c++] 백준 1931 회의실 배정 (0) | 2021.08.24 |
[c++] 백준 1260 DFS와 BFS (0) | 2021.08.21 |
[c++] 백준 14425 문자열 집합 (0) | 2021.08.20 |
[c++] 백준 14725 개미굴 (0) | 2021.08.17 |