C++BFS蒟蒻求助
查看原帖
C++BFS蒟蒻求助
275352
__Cocoa__楼主2020/6/14 20:49
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;

#define N 100001

struct Node{
	int loc;
	int value;
	Node(int loc=0,int value=0):
		loc(loc),value(value){}
};

int a,b,n;
bool vis[N]={false};
void BFS();

int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a>>b;
		memset(vis,0,sizeof(bool)*N);
		BFS();
	}
	return 0;
}

void BFS(){
	queue<Node> q;
	Node head,tmp,tmp2;//={.loc=a,.value=0}
	head.loc=a;head.value=0;
	q.push(head);
	while(!q.empty()){
		tmp=q.front();
		q.pop();
		if(tmp.loc==b){
			cout<<tmp.value<<endl;
			return ;
		}
		//+1
		vis[tmp.loc]=true;
		if(!vis[tmp.loc+1]&&tmp.loc+1<N){
			tmp2.loc=tmp.loc+1;
			tmp2.value=tmp.value+1;
			q.push(tmp2);
		}
		//-1
		if(!vis[tmp.loc-1]&&tmp.loc-1>0){
			tmp2.loc=tmp.loc-1;
			tmp2.value=tmp.value+1;
			q.push(tmp2);
		}
		//*2
		if(!vis[tmp.loc*2]&&tmp.loc*2<N){
			tmp2.loc=tmp.loc*2;
			tmp2.value=tmp.value+1;
			q.push(tmp2);
		}
	}
}

全RE我裂开了

2020/6/14 20:49
加载中...