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(); } // Setset=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: