http://poj.org/problem?id=1611
简单并查集
代码:
import java.util.*;
import java.math.BigInteger;
import java.math.BigDecimal;
;
interface def{
public static final int N=30005;
}
public class Main implements def{
int [] f = new int[N];
int fx(int x){
if(f[x]!=x){
f[x]=fx(f[x]);
}
return f[x];
}
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
int n,m;
while(in.hasNext()){
n=in.nextInt();
m=in.nextInt();
if(n==0&&m==0){
break;
}
Main t=new Main();
for(int i=0;i<n;++i){
t.f[i]=i;
}
while((m--)>0){
int tmp=in.nextInt();
int pre=-1,k;
while((tmp--)>0){
k=in.nextInt();
if(pre!=-1){
t.f[t.fx(k)]=t.fx(pre);
}
pre=k;
}
}
int ans=0;
for(int i=0;i<n;++i){
//System.out.println(i+": "+t.f[i]);
if(t.fx(i)==t.fx(0)){
++ans;
}
}
System.out.println(ans);
}
}
}
浙公网安备 33010602011771号