File tree Expand file tree Collapse file tree 1 file changed +64
-0
lines changed
Expand file tree Collapse file tree 1 file changed +64
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.* ;
3+ import java.util.* ;
4+
5+ public class Main {
6+ static int MAX = 100001 ;
7+
8+ public static void main (String [] args ) throws Exception {
9+ BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
10+ StringTokenizer st = new StringTokenizer (br. readLine());
11+
12+ int n = Integer . parseInt(st. nextToken());
13+ int k = Integer . parseInt(st. nextToken());
14+
15+ int [] dist = new int [MAX ];
16+ int [] prev = new int [MAX ];
17+
18+ Arrays . fill(dist, - 1 );
19+
20+ Queue<Integer > q = new LinkedList<> ();
21+ q. offer(n);
22+ dist[n] = 0 ;
23+
24+ while (! q. isEmpty()) {
25+ int now = q. poll();
26+
27+ for (int i = 0 ; i < 3 ; i++ ) {
28+ int next = 0 ;
29+ switch (i) {
30+ case 0 :
31+ next = now - 1 ;
32+ break ;
33+ case 1 :
34+ next = now + 1 ;
35+ break ;
36+ case 2 :
37+ next = now * 2 ;
38+ break ;
39+ }
40+
41+ if (next >= 0 && next < MAX && dist[next] == - 1 ) {
42+ dist[next] = dist[now] + 1 ;
43+ prev[next] = now;
44+ q. offer(next);
45+ }
46+ }
47+
48+ }
49+
50+ System . out. println(dist[k]);
51+
52+ Stack<Integer > path = new Stack<> ();
53+ for (int i = k; i != n; i = prev[i]) {
54+ path. push(i);
55+ }
56+ path. push(n);
57+
58+ while (! path. isEmpty()) {
59+ System . out. print(path. pop() + " " );
60+ }
61+ }
62+ }
63+
64+ ```
You can’t perform that action at this time.
0 commit comments