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

}

  

posted on 2012-12-08 13:26  夜->  阅读(121)  评论(0编辑  收藏  举报