每日算法-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-/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/lwyy1223-/p/12748152.html