import
java.util.ArrayList;
import
java.util.PriorityQueue;
class
Pair
implements
Comparable<Pair>
{
int
first, second;
public
Pair(
int
first,
int
second)
{
this
.first = first;
this
.second = second;
}
public
int
compareTo(Pair o)
{
if
(
this
.first == o.first)
{
return
this
.second - o.second;
}
return
this
.first - o.first;
}
}
class
GFG{
static
int
dijkstra(
int
s,
int
d,
ArrayList<ArrayList<Pair>> gr)
{
if
(s == d)
return
0
;
PriorityQueue<Pair> pq =
new
PriorityQueue<>();
pq.add(
new
Pair(
1
, s));
boolean
[] v =
new
boolean
[gr.size()];
while
(!pq.isEmpty())
{
Pair p = pq.poll();
int
curr = p.second;
int
dist = p.first;
if
(v[curr])
continue
;
v[curr] =
true
;
if
(curr == d)
return
dist;
for
(Pair it : gr.get(curr))
pq.add(
new
Pair(dist ^ it.second, it.first));
}
return
-
1
;
}
public
static
void
main(String[] args)
{
int
n =
3
;
ArrayList<ArrayList<Pair>> gr =
new
ArrayList<>();
for
(
int
i =
0
; i < n +
1
; i++)
{
gr.add(
new
ArrayList<Pair>());
}
gr.get(
1
).add(
new
Pair(
3
,
9
));
gr.get(
2
).add(
new
Pair(
3
,
1
));
gr.get(
1
).add(
new
Pair(
2
,
5
));
int
s =
1
, d =
3
;
System.out.println(dijkstra(s, d, gr));
}
}