ArrayList bfs(int start, int end) { ArrayList q = new ArrayList(); ArrayList res = new ArrayList(); q.add(start); int[] edge; int q_size = 1; while (q_size > 0) { int next = q.get(0); q.remove(0); q_size--; vis[next] = true; g.add_edge(0, 0); for (int neighbor : g.adj.get(next)) { if (vis[neighbor]) continue; q.add(neighbor); edge = new int[]{next, neighbor}; res.add(edge); q_size++; if (neighbor == end) return res; } } return res; }