import
java.io.*;
import
java.util.*;
class
GFG {
public
static
int
frogPosition(
int
n,
int
[][] edges,
int
t,
int
target)
{
List<Integer>[] adj =
new
ArrayList[n];
for
(
int
i =
0
; i < n; i++) {
adj[i] =
new
ArrayList<>();
}
--target;
for
(
int
[] edge : edges) {
int
u = edge[
0
], v = edge[
1
];
--u;
--v;
adj[u].add(v);
adj[v].add(u);
}
Queue<Frog> q =
new
LinkedList<>();
q.offer(
new
Frog(
0
, -
1
,
0
,
false
));
while
(!q.isEmpty()) {
Frog curr = q.poll();
if
(curr.time == t) {
if
(curr.node == target
|| curr.target_visited)
return
curr.node +
1
;
continue
;
}
int
childs = adj[curr.node].size();
if
(curr.node !=
0
)
childs--;
if
(childs ==
0
) {
if
(curr.node == target
|| curr.target_visited)
return
curr.node +
1
;
continue
;
}
for
(
int
i : adj[curr.node]) {
if
(i == curr.parent)
continue
;
q.offer(
new
Frog(i, curr.node,
curr.time +
1
,
curr.node == target));
}
}
return
-
1
;
}
public
static
void
main(String[] args)
{
int
n, time, target_node;
n =
7
;
time =
2
;
target_node =
4
;
int
edges1[][] = { {
1
,
2
}, {
1
,
3
}, {
1
,
7
},
{
2
,
4
}, {
2
,
6
}, {
3
,
5
} };
System.out.println(
frogPosition(n, edges1, time, target_node));
}
public
static
class
Frog {
int
node;
int
time;
int
parent;
boolean
target_visited;
Frog(
int
node,
int
parent,
int
time,
boolean
target_visited)
{
this
.node = node;
this
.parent = parent;
this
.time = time;
this
.target_visited =
false
;
}
}
}