Thursday, 20 February 2014

UVA Problem ID 459 (Graph Connectivity)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main
{
	static int pset[];
	 
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String input;
		StringBuffer sb = new StringBuffer("");
		int testcases = Integer.parseInt(br.readLine());
		br.readLine();
		for (int i = 0; i < testcases; i++)
		{
			if(i>0)
				sb.append("\n");
			int largest=br.readLine().charAt(0)-64;
			initSet(largest);
			while((input=br.readLine())!=null)
			{
				if(input.trim().equals(""))
					break;
				
				union(input.charAt(0)-65,input.charAt(1)-65);
//				UnionFindDisjoint1.print();
				
			}
			
//			Set set=UnionFindDisjoint1.unique();
			sb.append(numberOfSets()+"\n");
			
		}
		System.out.print(sb);
	}
	public static int findSet(int i)
	{
		return (pset[i] == i) ? i : (pset[i] = findSet(pset[i]));
	}
	public static void  union(int i,int j)
	{
		pset[findSet(i)] = findSet(j);
	}
	public static void initSet(int size)
	{
		pset=new int[size];
		for (int i = 0; i < size; i++)
		{
			pset[i]=i;
		}
	}
	public static int numberOfSets()
	{
		int numerofsets=0;
		for (int i = 0; i < pset.length; i++)
		{
			if(pset[i] == i)
				numerofsets++;
		}
		return numerofsets;
	}
}

Previous Post
Next Post

0 comments:

Advertisement