专题四 · 1003
Posted suamfadmp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了专题四 · 1003相关的知识,希望对你有一定的参考价值。
代码及解释
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <iostream>
// 上课讲的一道题
// 并查集的思考:
// 一种并查集是上课的时候老师讲的
// 这种并查集的查询效率很快
// 但是更新的速度比较慢
// 实际上另外一种是查询效率慢
// 更新速度很快
// 这两种可以应用于不同的场景
using std::cin;
using std::cout;
using std::endl;
const int SIZE = 1500;
int set[SIZE];
int find_set(int x)
int r = x;
while (set[r] != r)
r = set[r];
return r;
void merge(int x, int y)
x = find_set(x);
y = find_set(y);
if (x != y)
set[x] = y;
int main()
int n, m;
while (cin >> n && n)
for (int i = 1; i <= n; i++)
set[i] = i;
cin >> m;
while (m--)
int x, y;
scanf("%d %d", &x, &y);
merge(x, y);
int count = -1;
for (int i = 1; i <= n; i++)
if (set[i] == i)
count++;
printf("%d\\n", count);
以上是关于专题四 · 1003的主要内容,如果未能解决你的问题,请参考以下文章