70分,T了一个点
查看原帖
70分,T了一个点
714896
xuxudong2022楼主2023/9/15 17:20

本蒟蒻找不出问题在哪,发个帖子问问大佬。

#include<bits/stdc++.h>
using namespace std;
struct node{
	int x,y,step;
};
node q[5000005];
node po;
int c;
int f,r;
int n,m;
char mp[5005][5005];
int wx[4]={0,0,1,-1},wy[4]={1,-1,0,0};
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>mp[i][j];
			if(mp[i][j]=='@')
			{
				mp[i][j]='*';
				q[r++]=node{i,j,0};
			}
		}
	}
	while(f<r)
	{
		po=q[f++];
		for(int i=0;i<4;i++)
		{
			int xx=po.x+wx[i];
			int yy=po.y+wy[i];
			if(mp[xx][yy]>='A'&&mp[xx][yy]<='Z')
			{
				c=0;
				for(int i=2;i<=n-1;i++)
				{
					for(int j=2;j<=n-1;j++)
					{
						if(i==xx&&j==yy)
						{
							continue;
						}
						else if(mp[i][j]==mp[xx][yy])
						{
							q[r++]=node{i,j,po.step+1};
							c=1;
							break;
						}
					}
					if(c==1)
					{
						break;
					}
				}
			}
			if(mp[xx][yy]=='.')
			{
				mp[xx][yy]='*';
				q[r++]=node{xx,yy,po.step+1};
			}
			if(mp[xx][yy]=='=')
			{
				po.step++;
				cout<<po.step;
				return 0;
			}
		}
	}
	return 0;
}
2023/9/15 17:20
加载中...