数据结构与算法-并查集算法

数据结构与算法-并查集算法

import java.util.Scanner;

public class UnionTest {
    public int[] array;
    public int n;
    public int m;
    public UnionTest(int n,int m){
        this.n=n;
        this.m=m;
        this.array=new int[n];
        for(int i=0;i<n;i++){
            array[i]=i;
        }
    }

    public int union(int a){
        int temp=a;
        while(a!=array[a]){
            a=array[a];
        }
        while(a!=temp){
            int t=temp;
            temp=array[temp];
            array[t]=a;
        }
        return a;
    }
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int m=scanner.nextInt();
        UnionTest unionTest=new UnionTest(n,m);
        int sum=0;
        for(int i=0;i<m;i++){
            int a,b;
            a=scanner.nextInt();
            b=scanner.nextInt();
            int x=unionTest.union(a);
            int y=unionTest.union(b);
            if(x!=y){
                unionTest.array[x]=y;
                sum++;
            }
        }
        System.out.println(sum);
    }
}
posted on 2021-10-08 21:19  gyp666  阅读(35)  评论(0)    收藏  举报