๋ฌธ์
๋ฐฉํฅ ์๋ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ๊ฒฐ ์์ (Connected Component)์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ๊ฐ์ ์ ์ ๋์ u์ v๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ u, v ≤ N, u ≠ v) ๊ฐ์ ๊ฐ์ ์ ํ ๋ฒ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฐ๊ฒฐ ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
6 5
1 2
2 5
5 1
3 4
4 6
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
2
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
6 8
1 2
2 5
5 1
3 4
4 6
5 4
2 4
2 3
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
1โ
ํ์ด๊ณผ์
์ ์ : ์ ์ ๊ฐ์
๊ฐ์ : ์ ์ ์๋ก ์ด์ด์ฃผ๋ ์
์ด๋ผ๊ณ ํ๊ณ ๊ทธ๋ฆผ์ ๋ฐ๋ผ์ 1, 2, 5 ๊ฐ ํ๋์ ์ ์ ์ด์ด์ ธ์๊ณ 3, 4, 6์ด ํ๋์ ์ ์ ์ด์ด์ ธ์์ด์ 2๊ฐ์ ๋ฌถ์์ด๋ผ ์ฐ๊ฒฐ์์์ ๊ฐ์๊ฐ 2๊ฐ๊ฐ ๋๋๊ฒ์ด๋ค.
code
#include <iostream>
#include <vector>
#include <queue>
std::vector<int> a[1001];
int bfs(int start, int n)
{
std::queue<int> q;
int visit[1001] = {0};
int count = 0;
for(int i = 1; i <= n; i++)
{
if (!visit[i])
{
q.push(i);
visit[i] = true;
while (!q.empty())
{
int x = q.front();
q.pop();
for(int j = 0; j < a[x].size(); j++) {
int y = a[x][j];
if (!visit[y]) {
q.push(y);
visit[y] = true;
}
}
}
count++;
}
}
return (count);
}
int main()
{
int n, m, u, v;
int count = 0;
std::cin >> n >> m;
for(int i = 0; i < m; i++)
{
std::cin >> u >> v;
a[u].push_back(v);
a[v].push_back(u);
}
std::cout << bfs(1, n);
return (0);
}
ํ๊ธฐ์ฐ
๋ณธ๊ฒฉ์ ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ํ์ด์ผ๊ฒ ๋ค๊ณ ๋ง์์ ๋จน๊ณ bfs ๋ฌธ์ ๋ฅผ ๋ดค๋๋ฐ ๊ธฐ์ต์ด ๊ฐ๋ฌผ๊ฐ๋ฌผํ๋๋ผ
ํ์คํ๊ฒ ๊ฐ๋ ์ ์ก์ ์ ์๋๋ก ๋ ธ๋ ฅ์ ๋ง์ด ํด์ผํ ๊ฑฐ ๊ฐ๋ค.
'Algorithm > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 12018๋ฒ - Yonsei TOTO (C++) (0) | 2023.07.04 |
---|---|
[๋ฐฑ์ค] 1260๋ฒ - DFS์ BFS (C++) (0) | 2023.07.02 |
[๋ฐฑ์ค] 14940๋ฒ - ์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ (C++) (0) | 2023.07.01 |
[๋ฐฑ์ค] 17608๋ฒ - ๋ง๋๊ธฐ (python) (3) | 2021.09.20 |
[๋ฐฑ์ค] 2884๋ฒ - ์๋ ์๊ณ (python) (0) | 2021.09.13 |