爆0BFS求助!
查看原帖
爆0BFS求助!
670355
Nuclear_Fish_cyq楼主2022/8/29 10:44
#include <bits/stdc++.h>
using namespace std;
int n, dis[400001], now, t, s, e;
bool vis[400001];
int bfs(){
	queue<int> a;
	for(int i = 0; i <= 400000; i++){
		vis[i] = false;
		dis[i] = 0;
	}
	vis[s] = true;
	a.push(s);
	while(!a.empty() && !vis[e]){
		now = a.front();
		a.pop();
		t = now - 1;
		if(t > 0){
			if(!vis[t]){
				dis[t] = dis[now] + 1;
				vis[t] = true;
				a.push(t);
			}
		}
		t = now + 1;
		if(t > 0){
			if(!vis[t]){
				dis[t] = dis[now] + 1;
				vis[t] = true;
				a.push(t);
			}
		}
		t = now * 2;
		if(t > 0 && t <= 400001){
			if(!vis[t]){
				dis[t] = dis[now] + 1;
				vis[t] = true;
				a.push(t);
			}
		}
	}
	return dis[e];
}
int main(){
	cin >> n;
	for(int i = 0; i < n; i++){
		cin >> s >> e;
		cout << bfs() << endl;
	}
	return 0;
}
2022/8/29 10:44
加载中...