package com.interview.algorithms.graph; import java.util.HashSet; import java.util.Set; import com.interview.basics.model.graph.searcher.DFSearcher; import com.interview.basics.model.graph.Graph; import com.interview.basics.model.graph.searcher.NonRecursiveDFSearcher; import com.interview.basics.model.graph.searcher.ProblemSolver; public class C6_7_GraphCC extends ProblemSolver { public int[] flag; public Set<Integer>[] components; public C6_7_GraphCC(Graph g){ super(g); flag = new int[g.V]; searcher = new DFSearcher(g); //searcher = new NonRecursiveDFSearcher(g); } @SuppressWarnings("unchecked") public void solve(){ super.solve(); count --; components = (Set<Integer>[]) new Set[count + 1]; for(int i = 0; i < g.V; i++){ Set<Integer> set = components[flag[i]]; if(set == null){ set = new HashSet<Integer>(); components[flag[i]] = set; } set.add(i); } } public Set<Integer>[] getComponents() { return components; } @Override public void preProcess(int v) { flag[v] = count; } @Override public void postProcess(int v) { // TODO Auto-generated method stub } }