class
Solution {
public
int
bfs(ArrayList<ArrayList<Integer> > adj,
int
V,
int
[] vis,
int
[] level,
int
X)
{
if
(X >= V)
return
-
1
;
int
x =
0
;
Queue<Integer> q =
new
LinkedList<>();
q.add(x);
vis[x] =
1
;
level[x] =
0
;
while
(!q.isEmpty()) {
int
curr = q.poll();
for
(
int
i : adj.get(curr)) {
if
(vis[i] ==
0
) {
q.add(i);
level[i] = level[curr] +
1
;
vis[i] =
1
;
}
}
}
return
level[X];
}
public
int
nodeLevel(
int
V,
ArrayList<ArrayList<Integer> > adj,
int
X)
{
int
[] vis =
new
int
[V];
int
[] level =
new
int
[V];
for
(
int
i =
0
; i < V; i++) {
level[i] = -
1
;
}
return
bfs(adj, V, vis, level, X);
}
};