๐ฃ ๋ฌธ์ ์ดํด
1๋ฒ ์ปดํจํฐ์ ๋ฐ์ด๋ฌ์ค๊ฐ ๊ฐ์ผ๋๋ฉด ์ด์ ์ฐ๊ฒฐ๋์ด ๋ฐ์ด๋ฌ์ค์ ๊ฐ์ผ๋๋ ์ปดํจํฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
1๋ฒ ์ปดํจํฐ(๋ ธ๋)์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ(๋ ธ๋) ๊ฐ์๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
๋๋น ์ฐ์ ํ์(BFS) ๊ธฐ๋ฒ์ผ๋ก ํ์ดํ๋ค.
๐ญ ํ์ด ๊ณผ์
์์ฑ ์ธ์ด: C++
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
int visited[101] = {0, };
int bfs(deque<deque<int>> nodes) {
int virused = 0;
deque<int> queue;
// 1๋ฒ ์ปดํจํฐ์์ ์์, ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
queue.push_back(1);
visited[1] = 1;
while (!queue.empty()) {
int now_node = queue.front();
queue.pop_front();
for (int i = 0; i < nodes[now_node].size(); ++i) {
int linked_node = nodes[now_node][i];
// ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ปดํจํฐ๋ฅผ ์ฐพ์์ ํ์ ๋ฃ๊ณ
// ๋ฐฉ๋ฌธ์ฒ๋ฆฌ, ๋ฐ์ด๋ฌ์ค ๊ฐ์ผ ์ 1 ์ฆ๊ฐ
if (!visited[linked_node]) {
queue.push_back(linked_node);
visited[linked_node] = 1;
virused += 1;
}
}
}
return virused;
}
int main() {
deque<deque<int>> nodes;
deque<int> link;
int total_com = 0, links = 0;
cin >> total_com;
for (int i = 0; i <= total_com; ++i) {
nodes.push_back(link);
}
cin >> links;
while (links--) {
int a = 0, b = 0;
cin >> a >> b;
// ๋คํธ์ํฌ๋ ์๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒ์ผ๋ก ์ค์
nodes[a].push_back(b);
nodes[b].push_back(a);
}
for (int i = 0; i <= total_com; ++i) {
sort(nodes[i].begin(), nodes[i].end()); // ๊ฐ ๋
ธ๋์ ์ฐ๊ฒฐ์ ๋ณด๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
}
cout << bfs(nodes) << endl;
return 0;
}
๐ ๋ฐฐ์ด ์
๊ตฌํ์ด ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋์๋๋ฐ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํ์ ์ฝ์ ํ ๋๊ฐ ์๋๋ผ (for ๋ฌธ ๋ด๋ถ)
pop_front ํ ๋ ์ฝ์ ํ๋ฉด ์ด๋ฏธ ํ์ ๋ฃ์ด๋ ๋ ธ๋๋ ๋ค์ ์ฝ์ ํ๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค. => ๋ ธ๋๋ฅผ ์ค๋ณตํด์ ์ผ๋ค๋ ๊ฒ.
๐ ํ์ ์ฝ์ ํ๋ฉด์ ๋ฐฉ๋ฌธ์ฒ๋ฆฌํด์ ํด๊ฒฐ!!
'Problem_Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ๋ฐฑ์ค 1922 ๋คํธ์ํฌ ์ฐ๊ฒฐ / ์ต์ ์ ์ฅ ํธ๋ฆฌ(MST), ํฌ๋ฃจ์ค์นผ (0) | 2020.11.19 |
---|---|
[BOJ] ๋ฐฑ์ค 14503 ๋ก๋ด ์ฒญ์๊ธฐ / ๊ตฌํ (0) | 2020.11.06 |
[2020 KAKAO BLIND RECRUITMENT] ๋ฌธ์์ด ์์ถ (0) | 2020.09.01 |
[BOJ] ๋ฐฑ์ค 7576 ํ ๋งํ / ๋๋น ์ฐ์ ํ์(BFS) (0) | 2020.08.31 |
[2018 KAKAO BLIND RECRUITMENT] ๋คํธ ๊ฒ์ (0) | 2020.08.29 |