public FindSSCsInGraph(int numNodes, String filename) throws IOException {
		originalGraph = new HashMap<Integer, LinkedList<Integer>>();
		reversedGraph = new HashMap<Integer, LinkedList<Integer>>();
		nodesStatus = new BitSet(numNodes);
		nodesFinishtime = new int[numNodes];
		nodesSortedbyFt = new int[numNodes];
		nodesStack = new int[numNodes];
		sortedSCCsSize = new int[numNodes];
		sccsOfLeader = new HashMap<Integer, LinkedList<Integer>>();
		totalNumNodes = numNodes;

		curFinishTime = 1;
		curLeader = -1;
		topOfStack = -1;

		for (int i = 0; i < numNodes; i++) {
			originalGraph.put(i, new LinkedList<Integer>());
			reversedGraph.put(i, new LinkedList<Integer>());
			nodesFinishtime[i] = 0;
			nodesSortedbyFt[i] = i; // initially set to be node's natural order
			nodesStack[i] = -1;
		}

		readFileIntoMemory(filename, 100);
	}