๋ฐ์ํ
https://www.acmicpc.net/problem/11724
๋ฌธ์
๋ฐฉํฅ ์๋ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ๊ฒฐ ์์ (Connected Component)์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ๊ฐ์ ์ ์ ๋์ u์ v๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ u, v ≤ N, u ≠ v) ๊ฐ์ ๊ฐ์ ์ ํ ๋ฒ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฐ๊ฒฐ ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
#include <iostream>
#include <queue>
using namespace std;
int main() {
ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
// ์
๋ ฅ
int n, m;
cin >> n >> m;
vector<vector<int>>graph(n+1);
for(int i=0; i<m; i++){
int u, v;
cin >> u >> v;
graph[u].push_back(v);
graph[v].push_back(u);
}
// ์ฐ์ฐ
int cnt = 0;
vector<bool>visit (n+1, false);
for(int i=1; i<=n; i++) {
if(visit[i])
continue;
cnt++;
queue<int> q;
q.push(i);
while(!q.empty()) {
int cur = q.front();
q.pop();
for(int j=0; j<graph[cur].size(); j++) {
int next = graph[cur][j];
if(visit[next])
continue;
visit[next] = true;
q.push(next);
}
}
}
// ์ถ๋ ฅ
cout << cnt;
return 0;
}
๋ฐ์ํ
'๐ Cpp > [Solved.ac] Class2~4' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 108282๋ฒ: ์คํ (0) | 2023.03.15 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 11650๋ฒ: ์ขํ ์ ๋ ฌํ๊ธฐ (0) | 2023.03.13 |
[BOJ][C++] ๋ฐฑ์ค 1697๋ฒ: ์จ๋ฐ๊ผญ์ง (0) | 2023.02.28 |
[BOJ][C++] ๋ฐฑ์ค 11050๋ฒ: ์ดํญ ๊ณ์ 1 (0) | 2023.02.28 |
[BOJ][C++] ๋ฐฑ์ค 11726๋ฒ: 2xn ํ์ผ๋ง (0) | 2023.02.23 |