public void addEdge(int from, int to) { if (to < 0 || from < 0) { throw new IllegalArgumentException(); } sz = Math.max(sz, Math.max(from, to) + 1); builtGraph = null; if (addedEdges.size() == from) { addedEdges.add(IntHashSet.from(to)); } else if (addedEdges.size() <= from) { addedEdges.addAll(Collections.nCopies(from - addedEdges.size(), null)); addedEdges.add(IntHashSet.from(to)); } else { IntSet set = addedEdges.get(from); if (set == null) { addedEdges.set(from, IntHashSet.from(to)); } else { set.add(to); } } }
IntegerArray orderedSuccessors = new IntegerArray(successors.length); if (terminalNodes.size() > 0) { IntSet loopNodes = IntHashSet.from(findNaturalLoop(node, terminalNodes.getAll())); for (int succ : successors) { if (loopNodes.contains(succ)) {