숨바꼭질 3(13549)
Last updated
Last updated
import java.util.*;
import java.io.*;
public class Main {
static boolean[] visited = new boolean[100001];
static int dist[] = new int[100001];
static int min = Integer.MAX_VALUE;
static class Step{
int dist;
int cnt;
public Step(int n, int m){
this.dist = n;
this.cnt = m;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
fn(n, m);
}
public static void fn(int start, int end){
Queue<Step> q = new LinkedList<>();
q.add(new Step(start, 0));
while(!q.isEmpty()){
Step tmp = q.poll();
visited[tmp.dist] = true;
if(tmp.dist == end){
min = Math.min(min, tmp.cnt);
}
if(tmp.dist*2>=0 && tmp.dist*2<100000 && !visited[tmp.dist*2]){
q.add(new Step(tmp.dist*2, tmp.cnt));
}
if(tmp.dist+1>=0 && tmp.dist+1<100000 && !visited[tmp.dist+1]){
q.add(new Step(tmp.dist+1, tmp.cnt+1));
}
if(tmp.dist-1>=0 && tmp.dist-1<100000 && !visited[tmp.dist-1]){
q.add(new Step(tmp.dist-1, tmp.cnt+1));
}
}
System.out.println(min);
}
}