2
public int[] countSubgraphsForEachDiameter(int n, int[][] edges) {4
ArrayList<Integer>[] graph = (ArrayList<Integer>[]) new ArrayList[n];5
for (int i = 0; i < n; i++) graph[i] = new ArrayList<>();7
for (int i = 0; i < edges.length; i++) {18
int[] darr = new int[n - 1];20
for (int mask = 0; mask < (1 << (n)); mask++) {21
int d = getmax(mask, graph);31
int getmax(int mask, ArrayList<Integer>[] graph) {35
for (int i = 0; i < 15; i++) {36
if ((mask & (1 << i)) != 0) {37
maxd = Math.max(maxd, dfs(i, graph, mask));44
int dfs(int node, ArrayList<Integer>[] graph, int mask) {46
Queue<Integer> q = new LinkedList<>();51
while (!q.isEmpty()) {54
for (int l = q.size() - 1; l >= 0; l--) {56
curr = curr ^ (1 << z1);59
for (int z : graph[z1]) {60
if (((mask & (1 << z)) != 0) && ((curr & (1 << z)) != 0)) {