简单搜索C-C不知道怎么回事代码总超时

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;

const int maxn=300000;

struct node{
	int x;
	int step;
};
node a,b;
int jx,nx;
int bfs(){
    int vis[maxn];
	memset(vis,0,sizeof(vis));
	queue<node>q;
	a.x=jx;
	vis[a.x]=1;
	a.step=0;
	q.push(a);
	while(!q.empty()){
		a=q.front();
		q.pop();
		if(a.x==nx){
			return a.step;
		}
		for(int i=0;i<3;i++){
			b=a;
			if(i==0){
				b.x=a.x+1;	
			}else if(i==1){
				b.x=a.x-1;
			}else if(i==2){
				b.x=a.x*2;	
			}
			b.step++;
			if(b.x==nx){
				return b.step;
			}
			if(!vis[b.x]&&b.x>=0&&b.x<=200000){
				    vis[b.x]=1;		
				    q.push(b);
			}
		}
	}	
}

int main(){
	cin>>jx>>nx;
	
	cout<<bfs()<<endl;
}

猜你喜欢

转载自blog.csdn.net/Helloirbd/article/details/82145914