数组大了RE,数组小了全-1,玄关
查看原帖
数组大了RE,数组小了全-1,玄关
1435010
zhouxiaodong楼主2025/7/29 09:34
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int dx[4]={-1,0,1,0};
const int dy[4]={0,1,0,-1};
int n,m,k,t,a[100010][100010];
struct node
{
	int px;
	int py;
	int s;
};
bool vis[100010][100010];
void bfs()
{
	int sx,sy,ex,ey;
	cin>>sx>>sy>>ex>>ey;
	memset(vis,0,sizeof(vis));
	vis[sx][sy]=1;
	queue<node>q;
	q.push({sx,sy,0});
	while(!q.empty())
	{
		node k=q.front();
		q.pop();
		if(k.px==ex&&k.py==ey)
		{
			cout<<k.s<<"\n";
			return;
		}
		for(int i=0;i<4;i++)
		{
			int xx=k.px+dx[i];
			int yy=k.py+dy[i];
			int ss=k.s+1;
			if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!vis[xx][yy])
			{
				if(i==1||i==3)
				{
					q.push({xx,yy,ss});
					vis[xx][yy]=1;
				}
				else if(a[k.px][k.py]&&a[xx][yy])
				{
					q.push({xx,yy,ss});
					vis[xx][yy]=1;
				}
			}
		}
	}
	cout<<-1<<"\n";
	return;
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0); 
	cin>>n>>m>>k;
	for(int i=1;i<=k;i++)
	{
		int x,u,v;
		cin>>x>>u>>v;
		for(int j=u;j<=v;j++)
		{
			a[x][j]=1;
		}
	}
	cin>>t;
	for(int i=1;i<=t;i++)
	{
		bfs();
	}
	return 0;
}

@jrzhr,@ lsd110504lsd,@Paper27

2025/7/29 09:34
加载中...