
μλ
νμΈμ.
μ€λμ DFSμ BFSμ λν΄ μμλ³΄κ³ , μ΄μ κ΄λ ¨λ κ°λ¨ν λ¬Έμ λ₯Ό νμ΄ν΄ λ³ΌκΉ ν©λλ€.
λ¨Όμ DFSμ BFSμ λ»μ λν΄ μ΄ν΄λ³΄κ² μ΅λλ€.
DFSλ Depth-First Search, κΉμ΄ μ°μ νμμ΄λΌλ μλ―Έλ₯Ό κ°κ³ μκ³ , BFSλ Breadth-First Search, λλΉ μ°μ νμμ΄λΌλ μλ―Έλ₯Ό κ°κ³ μμ΅λλ€.
μ¬κΈ°μ κΉμ΄μ λλΉλΌλ κ²μ μκΈ° μν΄μλ 무μμ νμνλμ§ μμμΌ νλλ°μ,
μ£Όλ‘ μ΄ νμ μκ³ λ¦¬μ¦μ κ·Έλν νΉμ νΈλ¦¬λ₯Ό νμν©λλ€.
μ¬κΈ°μ κ·Έλνμ νΈλ¦¬λ μλμ κ°μ μ°¨μ΄μ μ΄ μμ΅λλ€.

κ·ΈλΌ μ¬κΈ°μ νμ μκ³ λ¦¬μ¦μ κΉμ΄μ λλΉλ κ·Έλνλ νΈλ¦¬μ κΉμ΄λ λλΉλ₯Ό μλ―Ένλ€λ κ²μ μ μ μμ΅λλ€.
μ΅λν κΉκ² λ΄λ €κ° λ€ λλ €κ° κ° κ³³μ΄ μμ κ²½μ° μμΌλ‘ μ΄λνλ μκ³ λ¦¬μ¦ μ
λλ€.

μμλ₯Ό μκ°ν νλ©΄ μμ κ°μ μμλλ‘ μ΄λν©λλ€.
κ·Έλ¦Όμ 보면 νΈλ¦¬μ κΉμ΄ λκΉμ§ λ΄λ €κ°λ€κ° λμ΄μ κ° κΉμ΄κ° μμλ λ€μ λΆκΈ°λ‘ λμ΄κ°λ λͺ¨μ΅μ λ³Ό μ μμ΅λλ€.
DFSλ μλμ μΌλ‘ BFSλ³΄λ€ κ΅¬νμ΄ κ°λ¨νμ§λ§, κ²μμλ μ체λ BFSλ³΄λ€ λ리λ€λ νΉμ§μ΄ μμ΅λλ€.
μ€νμ΄λ μ κ·ν¨μλ‘ κ΅¬νν μ μμ΅λλ€.
μ΅λν λκ² μ΄λν λ€μ, λμ΄μ κ° μ μμ λ μλλ‘ μ΄λνλ μκ³ λ¦¬μ¦ μ
λλ€.

μμνλ μ μ μμ μΈμ ν κ³³ λ¨Όμ νμνλ λ°©λ²μΌλ‘, κ°μ₯ κ°κΉμ΄ μ μ μ λ¨Όμ λ°©λ¬Ένκ³ λ©λ¦¬ λ¨μ΄μ Έ μλ μ μ μ λμ€μ μννλ λ°©λ² μ
λλ€.
μΈμ ν μ μ μ λ¨Όμ νμνλ―λ‘ μ΅λ¨ κ²½λ‘κ° λ³΄μ₯λ©λλ€.
νλ‘ κ΅¬νν μ μμ΅λλ€.
μ λ¬Έμ λ DFSμ BFSλ₯Ό λμμ ꡬννλ λ¬Έμ μΈλ°μ, λμ λμμ ꡬννκΈ° μ’μ λ¬Έμ μ λλ€.
μ λ DFSλ₯Ό μ κ·λ‘, BFSλ₯Ό νλ₯Ό μ¬μ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμμ΅λλ€.
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
vector<bool> dfsVisit(1001);
vector<bool> bfsVisit(1001);
vector<vector<int>> map(1001);
void dfs(int index) {
cout << index << " ";
for(int child: map[index]) {
if (!dfsVisit[child]) {
dfsVisit[child] = true;
dfs(child);
}
}
}
int main() {
int n, m, start;
cin >> n >> m >> start;
for (int i = 0; i < m; ++i) {
int p, c;
cin >> p >> c;
map[p].push_back(c);
map[c].push_back(p);
}
for (int i = 1; i < map.size(); i++) {
sort(map[i].begin(), map[i].end());
}
dfsVisit[start] = true;
dfs(start);
cout << "\n";
queue<int> Q;
Q.push(start);
bfsVisit[start] = true;
while (!Q.empty()) {
int select = Q.front();
Q.pop();
cout << select << " ";
vector<int> input;
for (int child: map[select]) {
if (bfsVisit[child]) continue;
bfsVisit[child] = true;
Q.push(child);
}
}
}
μ€λμ νμ μκ³ λ¦¬μ¦ DFSμ BFSμ λν΄ μ€λͺ
ν΄ λλ Έμ΅λλ€.
μ²μ μ νλ©΄ μ΄λ €μ΄ μκ³ λ¦¬μ¦ μ΄μ§λ©΄ μ΅μν΄μ§λ©΄ μ΄λ μκ³ λ¦¬μ¦λ³΄λ€ κ°λ¨ν μκ³ λ¦¬μ¦ μΈκ² κ°μ΅λλ€..γ
γ
μ½μ΄μ£Όμ μ κ°μ¬ν©λλ€!