为什么对于我的代码贝茜是必死无疑的
查看原帖
为什么对于我的代码贝茜是必死无疑的
230875
Surge_of_Force楼主2021/7/24 11:21
#include<bits/stdc++.h>
using namespace std;
const int MAX=50010;
struct lx{
	int t,x,y;
}rp[MAX];
void bfs();
int m,dx[5]{0,-1,-1,1,1},dy[5]={0,-1,1,-1,1},maps[310][310],safe[310][310],timee,f[310][310],jl1[1010],jl2[1010];
int main()
{
	ios::sync_with_stdio(false);
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>rp[i].t>>rp[i].x>>rp[i].y;
		jl1[rp[i].t]=rp[i].x;//记录t时刻陨石落点 
		jl2[rp[i].t]=rp[i].y;
	}  
	for(int i=1;i<=m;i++)
	{
		safe[rp[i].x][rp[i].y]=1;//标记地点是否安全 
		for(int j=1;j<=4;j++)
		    safe[rp[i].x+dx[j]][rp[i].y+dy[j]]=1; 
	}   
	bfs();
	cout<<timee;
	return 0; 
}
void bfs()
{
	int i=0,j=1,t=0;
	int xx=0,yy=0;
	int ix[310]={0},iy[310]={0},jx[310]={0},jy[310]={0};
	while(i<j)
	{
		i++;
		if(safe[jx[j]][jy[j]])//若该点安全,搜索结束 
		   return ;
		timee++;
		maps[jl1[timee]][jl2[timee]]=1;
		for(int k=1;k<=4;k++)
		    maps[jl1[timee]+dx[k]][jl2[timee]+dy[k]]=1;//陨石落地
		for(int k=1;k<=4;k++)
		{
			xx=ix[i]+dx[k];yy=ix[i]+dy[k];
			if(!maps[xx][yy]&&jl1[timee+1]!=xx&&jl2[timee+1]!=yy&&!f[xx][yy])//防止贝茜被陨石砸死
			{
				xx+=dx[k];
				yy+=dy[k];
				j++;
				jx[j]=xx;
				jy[j]=yy;
			}  
		}
    }
    timee=-1;//贝茜终于还是被天谴了 
}
2021/7/24 11:21
加载中...