/** * beginning with startNode add all following nodes to LIFO queue. If node has been already * explored before, skip reexploration. */ @Override public void start( EdgeExplorer explorer, int startNode ) { TIntArrayStack stack = new TIntArrayStack(); GHBitSet explored = createBitSet(); stack.push(startNode); int current; while (stack.size() > 0) { current = stack.pop(); if (!explored.contains(current) && goFurther(current)) { EdgeIterator iter = explorer.setBaseNode(current); while (iter.next()) { int connectedId = iter.getAdjNode(); if (checkAdjacent(iter)) { stack.push(connectedId); } } explored.add(current); } } }
nodeLowLink[start] = index; index++; nodeStack.push(start); onStack.add(start);