//https://www.luogu.com.cn/problem/B4208
//B4208 [常州市赛 2021] 移动
#include<bits/stdc++.h>
using namespace std;
const int dx1[2]={-1,0};
const int dy1[2]={0,-1};
const int dx2[2]={1,0};
const int dy2[2]={0,1};
struct node
{
int x;
int y;
int s;
int id;
int ex;
int ey;
};
int n,m,k,t;
char a[100010][100010][50010];
int ans[50010];
bool vis[100010][100010][50010];
queue<node>q;
void bfs(int ans[])
{
while(!q.empty())
{
node l=q.front();
q.pop();
if(l.x==l.ex&&l.y==l.ey)
{
int res=l.id;
ans[res]=l.s;
}
for(int i=0;i<2;i++)
{
int xx=l.x+dx1[i];
int yy=l.y+dy1[i];
int ss=l.s+1;
int iid=l.id;
int eex=l.ex;
int eey=l.ey;
if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&!vis[xx][yy][iid]&&a[xx][yy][iid])
{
vis[xx][yy][iid]=true;
q.push({xx,yy,ss,iid,eex,eey});
}
}
for(int i=0;i<2;i++)
{
int xx=l.x+dx2[i];
int yy=l.y+dy2[i];
int ss=l.s+1;
int iid=l.id;
int eex=l.ex;
int eey=l.ey;
if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&!vis[xx][yy][iid])
{
vis[xx][yy][iid]=true;
q.push({xx,yy,ss,iid,eex,eey});
}
}
}
}
int main()
{
cin>>n>>m>>k;
for(int i=1;i<=k;i++)
{
int x,s,e;
cin>>x>>s>>e;
for(int j=s;j<=e;j++)
{
a[x][j][i]=1;
}
}
cin>>t;
for(int i=1;i<=t;i++)
{
int sx,sy,ex,ey;
cin>>sx>>sy>>ex>>ey;
q.push({sx,sy,0,i,ex,ey});
vis[sx][sy][i]=true;
ans[i]=-1;
}
bfs(ans);
for(int i=1;i<=t;i++)
{
cout<<ans[i]<<"\n";
}
return 0;
}
编译器报错...:
[编译错误] [
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s: Assembler messages:
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:271: Error: value of 00038ddbc9a02632 too large for field of 4 bytes at 0000000000000012
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:276: Error: value of 00038ddbc9a02649 too large for field of 4 bytes at 0000000000000029
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:285: Error: value of 00038ddbc9a02678 too large for field of 4 bytes at 0000000000000058
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:355: Error: value of 0001c6ede4d19b64 too large for field of 4 bytes at 0000000000000184
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:388: Error: value of 0001c6ede4d19be7 too large for field of 4 bytes at 0000000000000207
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:405: Error: value of 00038ddbc9a0285f too large for field of 4 bytes at 000000000000023f
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:461: Error: value of 0001c6ede4d19d0f too large for field of 4 bytes at 000000000000032f
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:478: Error: value of 0001c6ede4d19d50 too large for field of 4 bytes at 0000000000000370
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:495: Error: value of 00038ddbc9a029c8 too large for field of 4 bytes at 00000000000003a8
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:613: Error: value of 00038ddbc9a02b58 too large for field of 4 bytes at 0000000000000538
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:626: Error: value of 0001c6ede4d19f51 too large for field of 4 bytes at 0000000000000571
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:632: Error: value of 0001c6ede4ce91eb too large for field of 4 bytes at 000000000000058b
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:637: Error: value of 0001c6ede4ce9202 too large for field of 4 bytes at 00000000000005a2
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:647: Error: value of 0001c6ede4ce922d too large for field of 4 bytes at 00000000000005cd
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:3587: Error: value of 00038ddbc9a02c7d too large for field of 4 bytes at 000000000000060d
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:3630: Error: value of 00038ddbc9a02c48 too large for field of 4 bytes at 0000000000000628
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:3654: Error: value of 00038ddbc9a02cc8 too large for field of 4 bytes at 0000000000000658
C:\Users\Administrator\AppData\Local\Temp\ccCNLG9X.s:3658: Error: value of 00038ddbc9a02c90 too large for field of 4 bytes at 0000000000000670
]
洛谷 IDE 报错:
Received signal 11: Segmentation fault with invalid memory reference.