import
java.util.*;
public
class
Main {
static
void
bfsTraversal(List<List<Integer>> adj,
int
N,
int
source) {
boolean
[] vis =
new
boolean
[N +
1
];
Arrays.fill(vis,
false
);
int
[] dp =
new
int
[N +
1
];
Arrays.fill(dp,
0
);
List<Integer> v =
new
ArrayList<>();
v.add(source);
dp =
0
;
vis =
true
;
bfs(
1
, N, vis, dp, v, adj);
}
static
void
bfs(
int
curr,
int
N,
boolean
[] vis,
int
[] dp, List<Integer> v, List<List<Integer>> adj) {
while
(curr <= N) {
int
node = v.get(curr -
1
);
System.out.print(node +
", "
);
for
(
int
i =
0
; i < adj.get(node).size(); i++) {
int
next = adj.get(node).get(i);
if
((!vis[next]) && (dp[next] < dp[node] +
1
)) {
v.add(next);
dp[next] = dp[node] +
1
;
vis[next] =
true
;
}
}
curr +=
1
;
}
}
public
static
void
main(String[] args) {
int
N =
4
;
List<List<Integer>> adj =
new
ArrayList<>();
for
(
int
i =
0
; i < N +
1
; i++) {
adj.add(
new
ArrayList<>());
}
adj.get(
0
).add(
1
);
adj.get(
0
).add(
2
);
adj.get(
1
).add(
2
);
adj.get(
2
).add(
0
);
adj.get(
2
).add(
3
);
adj.get(
3
).add(
3
);
bfsTraversal(adj, N,
2
);
}
}