5 17
4HintThe fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
bfs注意注释的几个地方,坑哭我了,,,只怪自己太菜
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
int vis[110000];
int n,k;
struct node{
int val,d;
}s,num;
int bfs(){
memset(vis,0,sizeof(vis));
queue <node> Q;
while(!Q.empty()) Q.pop();
s.val=n; s.d=0;
vis[n]=1;
Q.push(s);
while(!Q.empty()){
s=Q.front();
Q.pop();
for(int i=0;i<3;i++){
if(i==0) num.val=s.val+1;
if(i==1) num.val=s.val-1;
if(i==2) num.val=s.val*2;
num.d=s.d+1;
if(num.val==k) return num.d;
if(num.val<0 || num.val>110000)//原来写的num.val>k,wa了20多次,草,fuck,,,
continue;
//if(num.val>=0&&!vis[num.val]&&num.val<100000){//这样写num.val大于110000是,vis数组就会溢出
if(!vis[num.val]){
vis[num.val]=1;
Q.push(num);
}
}
}
return -1;
}
int main(){
while(scanf("%d%d",&n,&k)!=EOF){
if(n>k) printf("%d\n",n-k);
else if(n==k) printf("0\n");
else
printf("%d\n",bfs());
}
return 0;
}hdu 2717 && poj 3278 Catch That Cow
原文:http://blog.csdn.net/ling_du/article/details/47314035