본문 바로가기

Programming/BOJ

[백준/C++] 11724번: 연결 요소의 개수 (DFS)

 

바이러스 문제와 동일

 

#include<iostream>
using namespace std;

int map[1001][1001];
int visit[1001];
int N, M;
int ans = 0;

void dfs(int x) {

	visit[x] = 1;

	for (int i = 1; i <= N; i++) {
		if (visit[i] == 0 && map[x][i]==1) {
			dfs(i);
		}
	}

}

int main() {

	
	cin >> N >> M;
	for (int j = 0; j < M; j++) {
		int x, y;
		cin >> x >> y;
		map[x][y] = 1;
		map[y][x] = 1;
		
	}

	for (int i = 1; i <= N; i++) {
		if (visit[i] == 0) {
			dfs(i);
			ans++;
		}
	}
	
	cout << ans << endl;
	return 0;
}