File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public int shortestPathLength (int [][] graph ) {
3
+ int n = graph .length ;
4
+ Map <Integer , Set <Set <Integer >>> map = new HashMap <>();
5
+ Queue <State > queue = new LinkedList <>();
6
+ for (int i = 0 ; i < n ; i ++) {
7
+ Set <Integer > visited = new HashSet <>();
8
+ visited .add (i );
9
+ map .put (i , new HashSet <>(List .of (visited )));
10
+ queue .add (new State (i , 0 , visited ));
11
+ }
12
+ while (!queue .isEmpty ()) {
13
+ State removed = queue .remove ();
14
+ int node = removed .node ();
15
+ int steps = removed .steps ();
16
+ Set <Integer > visited = removed .visited ();
17
+ if (visited .size () == n ) {
18
+ return steps ;
19
+ }
20
+ for (int conn : graph [node ]) {
21
+ Set <Integer > connVisited = new HashSet <>(visited );
22
+ connVisited .add (conn );
23
+ if (!map .get (conn ).contains (connVisited )) {
24
+ queue .add (new State (conn , steps + 1 , connVisited ));
25
+ map .computeIfAbsent (conn , k -> new HashSet <>()).add (connVisited );
26
+ }
27
+ }
28
+ }
29
+ return -1 ;
30
+ }
31
+
32
+ private static record State (int node , int steps , Set <Integer > visited ) {}
33
+ }
You can’t perform that action at this time.
0 commit comments