안녕 세상아,

[c++/백준] 11724 연결 요소의 개수 본문

백준

[c++/백준] 11724 연결 요소의 개수

돈 많은 백수가 되고싶다 2023. 6. 2. 17:50

https://www.acmicpc.net/problem/11724

 

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

연결 요소가 뭔지 몰라서 문제에서 나온 예제를 직접 그려보며 이해했다. 

연결 요소의 개수는 간단하게 말해서 각각 서로 연결되지 않은 그래프의 개수이다. 

 

dfs를 이용하여 탐색을 하였고, main문에서 일정한 조건으로 반복문을 돌리면서 cnt를 ++해주었다. 

#include <iostream>
#include <vector>
using namespace std;

int n, m;
int map[1001][1001];
bool isVisited[1001] = { false };
int ans = 0;

void dfs(int k) {
	isVisited[k] = true;

	for (int i = 1; i <= n; i++) {
		if (isVisited[i] == false && map[k][i] == 1) {
			isVisited[i] = true;
			dfs(i);
		}
	}
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> n >> m;

	for (int i = 0; i < m; i++) {
		int a, b;
		cin >> a >> b;
		map[a][b] = 1;
		map[b][a] = 1;
	}

	//for문 돌리면서 isVisited가 false이면 cnt++해줌
	for (int i = 1; i <= n; i++) {
		if (isVisited[i] == false) {
			ans++;
			dfs(i);
		}
	}
	cout << ans;
}

난이도는 그닥 높지 않은듯

'백준' 카테고리의 다른 글

[c++/백준] 2805 나무 자르기  (0) 2023.06.05
[c++/백준] 4948 베르트랑 공준  (0) 2023.06.03
[c++/백준] 1912 연속합  (1) 2023.06.02
[c++/백준] 11053 가장 긴 증가하는 부분 수열  (0) 2023.06.01
[c++/백준] 1260 DFS와 BFS  (0) 2023.05.17