내 세상

[Algorithms] Disjoint sets 본문

Coding/Algorithms

[Algorithms] Disjoint sets

sga8 2021. 2. 26. 16:52
728x90
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

const int MAX_N = 50050;
int N, M;
int group[MAX_N];
int ans;
int find(int k){
	if (group[k] == k) return k;
	return group[k] = find(group[k]);
}
int main()
{
	freopen("input.txt", "r", stdin);
	scanf("%d %d", &N, &M);
	ans = N;
	int i, u, v;
	for (i = 1; i <= N; i++)group[i] = i;
	for (i = 0; i < M; i++){
		scanf("%d %d", &u, &v);
		u = find(u);
		v = find(v);
		if (u == v) continue;
		ans--;
		group[v] = u;
	}
	printf("%d", ans);
	return 0;
}
728x90

'Coding > Algorithms' 카테고리의 다른 글

[Algorithms] Double Linked List 구현  (0) 2021.03.10
[Algorithms] Datastructure Queue 구현-Linked List  (0) 2021.03.10
[Algorithms] Merge Sort  (0) 2021.02.19
내꺼비공개  (0) 2020.09.16
[Algorithms] Minimum Spanning Tree, Kruskal, Prim  (0) 2019.05.01