TLE2个,别的MLE,bfs如何改???
查看原帖
TLE2个,别的MLE,bfs如何改???
670355
Nuclear_Fish_cyq楼主2022/5/4 15:08
#include <bits/stdc++.h>
using namespace std;
int n, a, b;
struct room{
	int d, pos, dis;
	bool check(){
		return pos >= 0 && pos < n;
	}
}c[200], t, now;
queue <room>q;
int main(){
	cin >> n >> a >> b;
	a--;
	b--;
	for(int i = 0; i < n; i++){
		cin >> c[i].d;
		c[i].pos = i;
		c[i].dis = -1;
	}
	c[a].dis = 0;
	q.push(c[a]);
	while(!q.empty()){//bfs
		now = q.front();
		q.pop();
		t = now;
		t.pos = now.pos + now.d;
		if(t.check()){
			c[t.pos].dis = now.dis + 1;
			q.push(c[t.pos]);
		}
		t.pos = now.pos - now.d;
		if(t.check()){
			c[t.pos].dis = now.dis + 1;
			q.push(c[t.pos]);
		}
	}
	cout << c[b].dis << endl;
	return 0;
}
2022/5/4 15:08
加载中...