并查集模板(Java版)
程序员文章站
2022-03-24 17:28:26
...
import java.util.Scanner;
public class Main{
static final int N=1050;
static int n,m,u,v;
static int[] p=new int[N];
static void init(){
for(int i=1;i<=n;i++){
p[i]=i;
}
}
static int find(int x){
return p[x]==x?x:(p[x]=find(p[x]));
}
static void unit(int a,int b){
p[find(a)]=find(b);
}
static boolean isUnit(int a,int b){
return find(a)==find(b);
}
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
while(cin.hasNext()){
n=cin.nextInt();
if(n==0){
break;
}
m=cin.nextInt();
init();
int res=n-1;
while(m-->0){
u=cin.nextInt();
v=cin.nextInt();
if(!isUnit(u,v)){
res--;
unit(u,v);
}
}
System.out.println(res);
}
}
}
上一篇: 数据结构-结构类型