求调!!!
查看原帖
求调!!!
1003721
shb20111113楼主2023/7/16 22:24
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int M;
long long a[400][400];
long long b[400][400];
int dx[4]= {0,0,1,-1};
int dy[4]= {1,-1,0,0};
int X,Y,T;
queue <int>qx;
queue <int>qy;
int bfs(int x,int y,int z,int max1) {
	qx.push(x);
	qy.push(y);
	while(!qx.empty()) {
		int xx=qx.front();
		int yy=qy.front();
		for(int i=0; i<4; i++) {
			/*参考*/if(b[xx+dx[i]][yy+dy[i]]==-1&&a[xx+dx[i]][yy+dy[i]]>b[xx][yy]+1&&xx+dx[i]>=0&&xx+dx[i]<=301&&yy+dy[i]>=0&&yy+dy[i]<=301) {
				b[xx+dx[i]][yy+dy[i]]=b[xx][yy]+1;
				qx.push(xx+dx[i]);
				qy.push(yy+dy[i]);
			}
		}
		qx.pop();
		qy.pop();
	}
	z++;
	return z;
}
int main() {
	cin>>M;
	memset(a,100000,sizeof(a));
	memset(b,-1,sizeof(b));
	b[0][0]=0;
	int max11=0;
	for(int i=0; i<M; i++) {
		cin>>X>>Y>>T;
		for(int j=0; j<4; j++) {
			if(a[X+dx[i]][Y+dy[i]]>T&&X+dx[i]>=0&&X+dx[i]<=301&&Y+dy[i]>=0&&Y+dy[i]<=301) {
				a[X+dx[i]][Y+dy[i]]=T;
			}
		}
	}
	bfs(0,0,1,max11);
	int min=1000000;
	for(int i=0;i<=301;i++)
	{
		for(int j=0;j<=301;j++)
		{
			if(min>b[i][j]&&b[i][j]!=-1&&a[i][j]==100000)min=b[i][j];
		}
	}
	if(min!=1000000)cout<<min;
	else cout<<-1;
	return /*3221225725*/0;
}
/*

*/```
一个WA,一个AC,另外十二个都是RE
2023/7/16 22:24
加载中...