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;
}
}
UVA Problem ID 459 (Graph Connectivity)
Tags:
459
graph
java
union-find
UVa

0 comments: