44求调,必关
查看原帖
44求调,必关
1574797
Wangrongle2013楼主2025/7/31 20:53

44分求调,调对者必关

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,m,dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
	cin>>n>>m;
	int b[n+3][m+3],x,y,sx,sy;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>b[i][j];
			if(b[i][j]==2)
			{
				x=i;
				y=j;
			}
		}
	}
	int h=0,t=1,q[n*m+3][5];
	bool bb[n+3][m+3];
	q[1][1]=0;
	q[1][2]=6;
	q[1][3]=x;
	q[1][4]=y;
	bb[x][y]=1;
	while(h<t)
	{
		
		h++;
		for(int i=0;i<4;i++)
		{
			int xx=q[h][3]+dx[i];
			int yy=q[h][4]+dy[i];
			q[t][2]=q[h][2]-1;
			q[t][1]=q[h][1]+1;
			if(b[xx][yy]==0||q[t][2]==0||bb[xx][yy]==1||xx>n||xx<1||yy>m||yy<1)
			{
				continue;
			}
			else if(b[xx][yy]==4)
			{
				t++;
				bb[xx][yy]=1;
				q[t][2]=6;
				q[t][3]=xx;
				q[t][4]=yy;
			}
			else if(b[xx][yy]==1)
			{
				t++;
				bb[xx][yy]=1;
				q[t][3]=xx;
				q[t][4]=yy;
			}
			else if(b[xx][yy]==3)
			{
				t++;
				cout<<q[t][1]<<' ';
				return 0;
			}
		}
	}
	cout<<-1;
	return 0;
}
2025/7/31 20:53
加载中...