private void postVisit(int nodeId) { if (boundaries.peek() == index[nodeId]) { boundaries.pop(); int elementCount = 0; int element; do { element = stack.pop(); connectedComponents[element] = nodeId; visited.put(element); elementCount++; } while (element != nodeId); minSetSize = Math.min(minSetSize, elementCount); maxSetSize = Math.max(maxSetSize, elementCount); setCount++; } }
private void postVisit(int nodeId) { if (boundaries.peek() == index[nodeId]) { boundaries.pop(); int elementCount = 0; int element; do { element = stack.pop(); connectedComponents[element] = nodeId; visited.put(element); elementCount++; } while (element != nodeId); minSetSize = Math.min(minSetSize, elementCount); maxSetSize = Math.max(maxSetSize, elementCount); setCount++; } }
private void visitEdge(int nodeId) { if (index[nodeId] == -1) { push(Action.VISIT, nodeId); } else if (!visited.contains(nodeId)) { while (index[nodeId] < boundaries.peek()) { boundaries.pop(); } } }
private void visitEdge(int nodeId) { if (index[nodeId] == -1) { push(Action.VISIT, nodeId); } else if (!visited.contains(nodeId)) { while (index[nodeId] < boundaries.peek()) { boundaries.pop(); } } }