蒟蒻63分代码(5个MLE)
查看原帖
蒟蒻63分代码(5个MLE)
499231
Jacky2009楼主2021/8/28 15:03
#include<bits/stdc++.h>
using namespace std;
int hit[305][305];
int times[305][305];
struct point{
	int x,y;
};

point fi[305][305];
int main(){
	int n;
	cin>>n;
	memset(times,0,sizeof(times));
	memset(hit,127,sizeof(hit));
//	cout<<hit[0][0];
	for(int i=0;i<n;i++){
		int x,y,z;
		cin>>x>>y>>z;
		if(hit[x][y]>=z)hit[x][y]=z;
		if(y-1>=0)if(hit[x][y-1]>=z)hit[x][y-1]=z;
		if(x-1>=0)if(hit[x-1][y]>=z)hit[x-1][y]=z;
		if(hit[x+1][y]>=z)hit[x+1][y]=z;
		if(hit[x][y+1]>=z)hit[x][y+1]=z;
	}
	for(int i=0;i<305;i++){
		for(int j=0;j<305;j++){
			fi[i][j].x=i;
			fi[i][j].y=j;
		}
	}
	int g[4][2]={{1,0},{-1,0},{0,-1},{0,1}};
	queue<point>q;
	q.push(fi[0][0]);
	while(!q.empty()){
		point xy=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int fx=xy.x+g[i][0],fy=xy.y+g[i][1];
			if(fx>=0&&fy>=0&&times[xy.x][xy.y]+1<hit[fx][fy]&&fx<301&&fy<301){
				times[fx][fy]=times[xy.x][xy.y]+1;
				q.push(fi[fx][fy]);
				if(hit[fx][fy]==2139062143){
					cout<<times[fx][fy];
					return 0;
				}
				
			}
		}
	}
	cout<<-1;
}
2021/8/28 15:03
加载中...