import java.util.*; public class DenseGraph extends Graph { private boolean[][] matrix; public DenseGraph(int n) { matrix = new boolean[n][n]; } public boolean hasEdge(int p, int q) { return matrix[p][q]; } public Set edgesFrom(int p) { Set result = new TreeSet<>(); for (int i = 0; i < matrix[p].length; i++) if (matrix[p][i]) result.add(i); return result; } public void addEdge(int p, int q) { matrix[p][q] = true; matrix[q][p] = true; } }