CSU1045: 并查集
2018-03-30 19:57
330 查看
Description
大一的学一下,大二以上还不会并查集的统统去面壁。Input
多组数据,每组第一行两个正整数n,m,表示有1~n这n个编号,m个关系。接下来m行,每行两个数i, j, 1 <= i, j <= n,表示i和j是一组的。每个编号自己和自己是一组的。1 < n < 1000000 ,1 < m < 100000 。Output
每组数据输出一行,一个数,表示组员最多的组的组员个数。Sample Input
10 5 1 2 3 5 2 6 4 7 9 6
Sample Output
4并查集模板题
#include <iostream>
#include <cmath>
#include <math.h>
#include <string.h>
#include <string>
#include <algorithm>
#include <queue>
using namespace std;
int fa[1000005];
int num[1000005];
int n, m;
void init()
{
for (int i = 0; i < n; i++)
{
fa[i] = i;
num[i] = 1;
}
return;
}
int find(int x)
{
if (fa[x] == x)
return x;
return fa[x] = find(fa[x]);
}
void join(int x, int y)
{
int fx = find(x);
int fy = find(y);
if (fx != fy)
{
fa[fx] = fy;
num[fy] += num[fx];
}
return;
}
int main()
{
while (cin >> n >> m)
{
int a, b;
init();
for (int i = 0; i < m; i++)
{
cin >> a >> b;
join(a, b);
}
sort(num, num + n + 1);
cout << num
<< endl;
}
return 0;
}
相关文章推荐
- CSU 1045: 并查集(带权并查集)
- csu 1601 War(并查集)
- CSU-ACM2018寒假训练9B-并查集&Kruskal D - 经典带权并查集
- CSU-ACM2017暑期训练10-并查集&&HASH C - 食物链 POJ - 1182 (并查集好题)
- CSU-ACM2018寒假训练9B-并查集&Kruskal E - 简单的种类并查集
- CSU1908-The Big Escape-并查集
- 【happy birthday】CSU 1326 The contest【并查集+分组背包】
- CSU1601: War(并查集)
- CSU1601: War(并查集)
- csu十月月赛 并查集+分组背包
- csu 1601: War(并查集求每次去掉一条边后连通分量的个数)
- csu 1601 1601: War (并查集 kruskal)
- CSU 1601 War (并查集)
- CSU 1601(并查集)
- 并查集
- lightoj1045 - Digits of Factorial(数论)
- uva live 5031 Graph and Queries(Treap x 并查集)
- 加权并查集(银河英雄传说,Cube Stacking)
- HDU 2473 Junk-Mail Filter 并查集删除(FZU 2155盟国)
- 并查集