每日算法-12(并查集)
找共有几个独立的团伙
import java.util.Scanner;
public class B并查集 {
static int []a=new int[100];
public static void input(int x)//初始化
{
for(int i=1;i<=x;i++)
{
a[i]=i;
}
return;
}
public static int fuji(int o)
{
if(a[o]==o)
{
return a[o];
}
else {
a[o]=fuji(a[o]);
return a[o];
}
}
public static void erzi(int y,int u)
{
int t1=0;int t2=0;
t1=fuji(y);
t2=fuji(u);
if(t1!=t2)
{
a[t2]=t1;
}
return;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();int m=in.nextInt();
int s=0,d=0;
input(n);
for(int i=1;i<=m;i++)
{
s=in.nextInt();d=in.nextInt();
erzi(s,d);
}
int sum=0;
for(int i=1;i<=n;i++) {
if(a[i]==i)
{
sum++;
}
}
System.out.println(sum);
}
}
输入输出:
11 10//分别是好多人、几条线索
1 2
3 4
5 2
4 6
2 6
7 11
8 7
9 7
9 11
1 6
3//输出3
作者:Better又
出处:https://www.cnblogs.com/lwyy1223-/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。