01迷宫求调
  • 板块P1141 01迷宫
  • 楼主Are_this
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/15 12:33
  • 上次更新2024/6/15 15:40:42
查看原帖
01迷宫求调
1263974
Are_this楼主2024/6/15 12:33
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a[1005][1005];
ll b[1005][1005];
bool f[1005][1005];
ll n,m,s,a1,b1,a2,b2,k,zd=LLONG_MIN;
ll dx[5]={0,-1,0,0,1};
ll dy[5]={0,0,-1,1,0};
struct data
{
	ll x,y,s;
	ll zx; 
}bbt[1000*1000+10];
string ss;
char c;
void bfs(ll x,ll y)
{
	zd=0;
	ll tx=0,ty=0;
	ll h=0,t=1;
	bbt[0].x=x;
	bbt[0].y=y;
	f[x][y]=1;
	while(h!=t)
	{
		for(ll i=1;i<=4;i++)
		{
	        tx=bbt[h].x+dx[i];
			ty=bbt[h].y+dy[i];
			ll p=bbt[h].s;
	        if(tx<1||ty<1||tx>n||ty>n|f[tx][ty]||a[tx][ty]==a[bbt[h].x][bbt[h].y]||b[tx][ty]>0)continue;
	        f[tx][ty]=1;
	        bbt[t].x=tx;
	        bbt[t].y=ty;
	        bbt[t].s=p+1;
	        bbt[t].zx=h;
	    	t++;
	    }
        h++;
    }
    for(ll i=0;i<=h;i++)
    {
    	b[bbt[i].x][bbt[i].y]=h;
	}
}
int main()
{
    cin>>n>>k;
	for(ll i=1;i<=n;i++)
	{
		cin>>ss;
		for(ll j=1;j<=n;j++)
		{
			a[i][j]=(ss[j-1]-'0');
		}
	}
	for(ll i=1;i<=n;i++)
	{
		for(ll j=1;j<=n;j++)
		{
			if(f[i][j]==0)bfs(i,j);
		}
	}
	while(k--)
	{
		scanf("%lld%lld",&a1,&b1);
		printf("%lld\n",b[a1][b1]);
	}
    return 0;
}

WA 9个点!

2024/6/15 12:33
加载中...