2
// g1-> graph with red edges3
// g2-> graph with blue edges4
List<Integer> g1[], g2[];5
int[] dist1, dist2, ans;8
public int[] shortestAlternatingPaths(int n, int[][] redEdges, int[][] blueEdges) {11
g1 = new ArrayList[n];12
g2 = new ArrayList[n];14
for (int i = 0; i < n; i++) {15
g1[i] = new ArrayList<>();16
g2[i] = new ArrayList<>();21
for (int i = 0; i < redEdges.length; i++) {22
int u = redEdges[i][0];23
int v = redEdges[i][1];26
for (int i = 0; i < blueEdges.length; i++) {27
int u = blueEdges[i][0];28
int v = blueEdges[i][1];35
for (int i = 0; i < n; i++) {36
ans[i] = Math.min(dist1[i], dist2[i]);37
if (ans[i] == MX) ans[i] = -1;42
public void dfs(int u, boolean flag) {45
if (dist1[v] > dist2[u] + 1) {46
dist1[v] = dist2[u] + 1;52
if (dist2[v] > dist1[u] + 1) {53
dist2[v] = dist1[u] + 1;