就机会复习一下并查集…
1: #include<iostream>
2: #include<string.h>
3: using namespace std;
4: const int maxn=1001;
5: int f[maxn];
6: int n,m,tot=0;
7:
8: int find(int x)
9: {
10: int i=x;
11: while (f[i]!=0) i=f[i];
12: return i;
13: }
14:
15: int main()
16: {
17: memset(f,0,sizeof(f));
18: cin >> n >> m;
19: int prex,prey,fx,fy;
20: for (int i=0;i<n;i++){
21: cin >> prex >> prey;
22: fx=find(prex);
23: fy=find(prey);
24: fx==fy?tot++:f[fx]=fy;
25: }
26: cout << tot << endl;
27: return 0;
28: }
本文深入解析了并查集这一数据结构的实现原理,通过C++代码展示了如何使用并查集解决特定问题,包括初始化、查找和合并操作。并查集常用于处理不相交集合的合并及查询问题,在图论、网络流等领域有广泛应用。
765

被折叠的 条评论
为什么被折叠?



