11724๋ฒ: ์ฐ๊ฒฐ ์์์ ๊ฐ์
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ๊ฐ์ ์ ์ ๋์ u์ v๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ u, v ≤ N, u ≠ v) ๊ฐ์ ๊ฐ์ ์ ํ ๋ฒ๋ง ์ฃผ
www.acmicpc.net
๋ฌธ์
๋ฐฉํฅ ์๋ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ๊ฒฐ ์์ (Connected Component)์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ๊ฐ์ ์ ์ ๋์ u์ v๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ u, v ≤ N, u ≠ v) ๊ฐ์ ๊ฐ์ ์ ํ ๋ฒ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฐ๊ฒฐ ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
6 5
1 2
2 5
5 1
3 4
4 6
์์ ์ถ๋ ฅ
2
Solution
#include <iostream>
using namespace std;
#define MAX 1001
int N, M, u, v, cnt;
int adj[MAX][MAX]; //์ธ์ ํ๋ ฌ ๋ฆฌ์คํธ
bool visited[MAX];
void DFS(int n){
visited[n] = true; //๋ฐฉ๋ฌธ ํ์
for(int i=1; i <= N; i++){
//์ฐ๊ฒฐ๋ ์์ ์ค ๋ฐฉ๋ฌธ ์ ํ์ผ๋ฉด ํ์ํ๊ธฐ
if(adj[n][i] == 1 && visited[i] == 0){
DFS(i);
}
}
}
int main() {
cin >> N >> M;
for(int i=0; i<M; i++){
cin >> u >> v;
adj[u][v] = 1; //์์ชฝ์ผ๋ก ์ฐ๊ฒฐ๋ผ์ ์์ ๋ฐ๊ฟ์ ์ด๊ธฐํ
adj[v][u] = 1;
}
//์ฐ๊ฒฐ ์์ ๊ฐ์
for(int i = 1; i <= N; i++){
if(visited[i] == 0){
cnt++;
DFS(i);
}
}
cout << cnt;
return 0;
}'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| BOJ 10845๋ฒ : ํ (C++/Silver 4) (0) | 2022.10.04 |
|---|---|
| BOJ 4963๋ฒ : ์ฌ์ ๊ฐ์ (C++/Silver 2) (1) | 2022.10.04 |
| BOJ 11726๋ฒ : 2รn ํ์ผ๋ง (C++/Silver 3) (0) | 2022.09.26 |
| BOJ 9095๋ฒ : 1, 2, 3 ๋ํ๊ธฐ (C++/Silver 3) (0) | 2022.09.23 |
| BOJ 10816๋ฒ : ์ซ์ ์นด๋ 2 (C++, Python/Silver 4) (0) | 2022.09.18 |