in src/main/java/com/twitter/sbf/graph/Graph.java [765:793]
Graph getUnweightedSubGraph(ImmutableMap<Integer, Integer> newToOriginal) {
int numNodesOfSubgraph = newToOriginal.size();
Map<Integer, Integer> originalToNew = new HashMap<>(newToOriginal.size(), 1.0f);
for (int i = 0; i < numNodesOfSubgraph; i++) {
originalToNew.put(newToOriginal.get(i), i);
}
int[][] newGraphNeighbors = new int[numNodesOfSubgraph][];
long newGraphEdges = 0;
for (int i = 0; i < numNodesOfSubgraph; i++) {
int originalId = newToOriginal.get(i);
ArrayList<Integer> newNeighbors = new ArrayList<>();
int[] originalNeighbors = this.getNeighbors(originalId);
for (int nbr : originalNeighbors) {
if (originalToNew.containsKey(nbr)) {
newNeighbors.add(originalToNew.get(nbr));
}
}
newGraphNeighbors[i] = new int[newNeighbors.size()];
int j = 0;
for (int newNbr : newNeighbors) {
newGraphNeighbors[i][j++] = newNbr;
newGraphEdges++;
}
}
return new Graph(numNodesOfSubgraph, newGraphEdges / 2, newGraphNeighbors);
}