数据结构与算法-并查集算法
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);
}
}