93分第三个测试点过不了!!!求大佬帮助
查看原帖
93分第三个测试点过不了!!!求大佬帮助
711871
fanyuchen2010楼主2023/4/4 18:42
#include<bits/stdc++.h>
using namespace std;
int m;
int mp[305][305];
bool v[305][305]; 
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
struct node{
	int x,y,step;
};
void BFS(){
	v[0][0]=true;
	queue<node>q;
	node k;
	k.step=0;
	k.x=0;
	k.y=0;
	q.push(k);
	while(q.size()){
		node r=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int ddx=dx[i]+r.x;
			int ddy=dy[i]+r.y;
			if(ddx>=0&&ddy>=0&&ddx<=301&&ddy<=301&&(r.step+1<mp[ddx][ddy]||mp[ddx][ddy]==0)&&!v[ddx][ddy]){
				if(!mp[ddx][ddy]){
					cout<<r.step+1;
					return;
				}
				v[ddx][ddy]=true;
				k.step=r.step+1;
				k.x=ddx;
				k.y=ddy;
				q.push(k);
			}
		}
	}
	cout<<-1;
}
int main(){
	cin>>m;
	int a,b,c;
	for(int i=1;i<=m;i++){
		cin>>a>>b>>c;
		if(mp[a][b])mp[a][b]=min(mp[a][b],c);
		else mp[a][b]=c;
		for(int j=0;j<4;j++){
			int da=a+dx[j];
			int db=b+dy[j];
			if(da>=0&&db>=0){
				if(mp[da][db])mp[da][db]=min(mp[da][db],c);
				else mp[da][db]=c;
			} 
		}
	}
	BFS();
	return 0;
} 
2023/4/4 18:42
加载中...