If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?
import java.util.*;
public class Main {
public LinkedList<Node> queue;
public boolean []visit;
public Main(){
this.queue=new LinkedList<Main.Node>();
visit=new boolean[200000];
}
public class Node{
int num;
int count;
public Node(){}
public Node(int num,int count) {
this.num=num;
this.count=count;
}
}
public int bfs(int n,int k){
if(n==k) return 0;
Node n0=new Node(n,0);
queue.add(n0);
visit[n]=true;
while(!queue.isEmpty()){
Node tmp=queue.peek();
if(tmp.num==k) return tmp.count;
queue.remove();
Node n1=new Node(tmp.num-1,tmp.count+1);
Node n2=new Node(tmp.num+1,tmp.count+1);
Node n3=new Node(tmp.num*2,tmp.count+1);
if(n1.num==k) return n1.count;
if(n2.num==k) return n2.count;
if(n3.num==k) return n3.count;
if(n1.num<150005 && n1.num>=0 && visit[n1.num]!=true ){
queue.add(n1);
visit[n1.num]=true;
}
if(n2.num<150005 && n2.num>=0 && visit[n2.num]!=true) {
queue.add(n2);
visit[n2.num]=true;
}
if(n3.num<150005 && n3.num>=0 && visit[n3.num]!=true){
queue.add(n3);
visit[n3.num]=true;
}
}
return 0;
}
public static void main(String[] args) {
int n,k;
Scanner cin=new Scanner(System.in);
while(cin.hasNext()){
n=cin.nextInt();
k=cin.nextInt();
System.out.println(new Main().bfs(n, k));
}
}
}
HDU2717-Catch That Cow,布布扣,bubuko.com
原文地址:http://blog.csdn.net/dutsoft/article/details/27663821