pku 3278 Catch That Cow(广搜)

搜过的位置打上标记,没有必要再去一次了。。

#include <queue> #include <iostream> using namespace std; struct node { int n,min; }; bool used[200005]; queue<node> position; int BFS(int N,int K) { if(N==K) return 0; used[N]=true; node temp,temp2; temp.n=N; temp.min=0; position.push(temp); while(!position.empty()) { temp=position.front(); position.pop(); temp2.min=temp.min+1; temp2.n=temp.n+1; if(temp2.n==K) return temp2.min; if(!used[temp2.n]&&temp2.n<=100000) used[temp2.n]=true,position.push(temp2); temp2.n=temp.n-1; if(temp2.n==K) return temp2.min; if(!used[temp2.n]&&0<temp2.n) used[temp2.n]=true,position.push(temp2); temp2.n=temp.n*2; if(temp2.n==K) return temp2.min; if(!used[temp2.n]&&temp2.n<=100000) used[temp2.n]=true,position.push(temp2); } } int main() { int N,K; memset(used,0,sizeof(used)); scanf("%d%d",&N,&K); printf("%d/n",BFS(N,K)); return 0; }

你可能感兴趣的:(pku 3278 Catch That Cow(广搜))