求求只要讲代码调成不RE即可(萌新新学OI求助)
查看原帖
求求只要讲代码调成不RE即可(萌新新学OI求助)
661534
Dehydration楼主2023/8/16 10:06

小小的绿题bfs求助:

#include<bits/stdc++.h>
#define SBSJ 16386
#define inf 2147483646
using namespace std;
string s[SBSJ];
vector<int> ans[SBSJ];
int zx[]={0,0,0,1,-1,1,1,-1,-1};
int zy[]={0,1,-1,0,0,-1,1,1,-1};
int n,m,xx,xy,bx,by;
bool z(int x,int y)
{
	return x>-1&&y>-1&&x<n&&y<m&&s[x][y]=='O';
}
void bfs()
{	
	
	for(int i(0);i<n;i++)for(int j(0);j<m;j++)ans[i][j]=inf;
	queue<pair<int,int>> q;
	q.push(make_pair(xx,xy));
	ans[xx][xy]=0;
	while(!q.empty())
	{
		int X=q.front().first,Y=q.front().second;
		q.pop();
		for(int i(1);i<=4;i++)
		{
			int xxx=X+zx[i],yyy=Y+zy[i];
			if(z(xxx,yyy)&&ans[xxx][yyy]==inf)
			{
				ans[xxx][yyy]=ans[X][Y]+1;
				q.push(make_pair(xxx,yyy));
			}
		}
	}
	int Ans=inf;Ans=min(Ans,ans[bx][by]);
	for(int i(1);i<=8;i++)
	{
		int xxx=bx+zx[i],yyy=by+zy[i];
		while(z(xxx,yyy))
		{
			Ans=min(Ans,ans[xxx][yyy]);
			xxx+=zx[i],yyy+=zy[i];
		}
	}
	if(Ans==inf)puts("Poor Harry");else cout<<Ans<<'\n';
}
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)cin>>s[i],ans[i].resize(m+1);
	while(cin>>by>>bx>>xy>>xx)
	{
		if(bx+by+xx+xy==0)return 0;
		bx--,by--,xx--,xy--;
		bfs();
	}
}

这都能错,又要被/cf 了/kk

2023/8/16 10:06
加载中...