70分·全RE,求调!!!
查看原帖
70分·全RE,求调!!!
1120253
HUANGRUI11楼主2024/4/13 16:28
using namespace std;
struct node{
	long long x,y,step;
}b[351][351];
queue<node> q;
long long i,j,n,m,f[351][351],cnt;
long long xf[5]={0,0,1,-1},yf[5]={1,-1,0,0};
char a[351][351];
void dfs(int xx,int yy)
{
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	if(a[i][j]==a[xx][yy]&&i!=xx)
	{
		b[xx][yy].x=i,b[xx][yy].y=j;
		b[i][j].x=xx,b[i][j].y=yy;
		break;
	}
}
int main()
{
	cin>>n>>m;
	for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
	{
		cin>>a[i][j];
		if(a[i][j]=='@') q.push((node){i,j,0});
		else if(a[i][j]>='A'&&a[i][j]<='Z') dfs(i,j);
	}
	while(!q.empty())
	{
		node p=q.front();
		q.pop();
		if(a[p.x][p.y]=='=') 
		{
			cout<<p.step;
			break; 
		}
		if(!(a[p.x][p.y]>='A'&&a[p.x][p.y]<='Z')) f[p.x][p.y]=1;
		for(int i=0;i<4;i++)
		{
			int xx=p.x+xf[i],yy=p.y+yf[i];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='#'&&f[xx][yy]==0) 
			{
				f[xx][yy]=1;
				if(a[xx][yy]>='A'&&a[xx][yy]<='Z')
				q.push((node){b[xx][yy].x,b[xx][yy].y,p.step+1});
				else q.push((node){xx,yy,p.step+1});
			}
		}
	}
	return 0;
}```
2024/4/13 16:28
加载中...