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); } } }