-
11724번 연결 요소의 개수 | DFS, BFS | Baekjoon BOJ 백준 11724 C++ 코드, 해설, 풀이[백준 알고리즘]/[C++] 2021. 1. 30. 12:39728x90반응형
이번 포스팅은 백준 11724번 연결 요소의 개수입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
기본 알고리즘
DFS 깊이우선탐색
BFS 너비우선탐색
전체 코드
DFS 깊이우선탐색
1234567891011121314151617181920212223242526272829303132333435363738394041//백준11724 연결요소의개수#include <iostream>using namespace std;const int MAX = 1001;int N, M;int map[MAX][MAX] = { 0, };bool visited[MAX] = { 0, };void DFS(int v) {visited[v] = true;for (int i = 1; i <= N; i++) {if (map[v][i] == 1 && visited[i] == 0) {visited[i] = 1;DFS(i);}}}int main() {cin >> N >> M;for (int i = 0; i < M; i++) {int u, v;cin >> u >> v;map[u][v] = 1;map[v][u] = 1;}int cnt = 0;for (int i = 1; i <= N; i++) {if (visited[i] == 0) {DFS(i);cnt++;}}cout << cnt << endl;}cs
BFS 너비우선탐색
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849//백준11724 연결요소의개수#include <iostream>#include <queue>using namespace std;const int MAX = 1001;int N, M;int map[MAX][MAX] = { 0, };bool visited[MAX] = { 0, };queue<int> q;void BFS(int v) {q.push(v);visited[v] = true;while (!q.empty()) {v = q.front();q.pop();for (int i = 1; i <= N; i++) {if (map[v][i] == 1 && visited[i] == 0) {q.push(i);visited[i] = true;}}}}int main() {cin >> N >> M;for (int i = 0; i < M; i++) {int u, v;cin >> u >> v;map[u][v] = 1;map[v][u] = 1;}int cnt = 0;for (int i = 1; i <= N; i++) {if (visited[i] == 0) {BFS(i);cnt++;}}cout << cnt << endl;}cs 728x90반응형'[백준 알고리즘] > [C++]' 카테고리의 다른 글
2178번 미로 탐색 | BFS | Baekjoon BOJ 백준 2178 C++ 코드, 해설, 풀이 (0) 2021.02.01 4936번 섬의 개수 | DFS | Baekjoon BOJ 백준 4936 C++ 코드, 해설, 풀이 (0) 2021.01.30 2667번 단지번호붙이기 | DFS | Baekjoon BOJ 백준 2667 C++ 코드, 해설, 풀이 (0) 2021.01.30 1012번 유기농 배추 | DFS | Baekjoon BOJ 백준 1012 C++ 코드, 해설, 풀이 (1) 2021.01.29 1110번 더하기 사이클 | Baekjoon BOJ 백준 1110 C++ 코드, 해설, 풀이 (0) 2021.01.28