poj 1611 The Suspects

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

		}

		

		

	}



}

  

你可能感兴趣的:(poj)