社区讨论

10分,dalao求调!(玄关)

P1332血色先锋队参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m657ap4v
此快照首次捕获于
2025/01/20 23:28
去年
此快照最后确认于
2025/11/04 11:10
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=5e2+5,maxm=1e6+5,INF=0x3f3f3f3f;
using namespace std;
int n,m,a,b;
struct Node{
    int x,y;
}q[maxn];
int qr=1,ql=1; 
bool vis[maxn][maxn]; 
int f[maxn][maxn];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0}; 
void bfs()
{
	while(ql<qr)
	{
        int xx,yy;
        xx=q[ql].x;
        yy=q[ql].y;
        ql++;
        for(int i=0;i<4;i++)
		{
			int xa=xx+dx[i],ya=yy+dy[i];
            if(xa>0&&xa<=n&&ya>0&&ya<=m&&!vis[xa][ya])
			{
                vis[xa][ya]=1;
                q[qr].x=xa;
                q[qr].y=ya;
                qr++;
                f[xa][ya]=f[xx][yy]+1;
            }
        }
    }
}
int main()
{
    cin>>n>>m>>a>>b;
    memset(f,0,sizeof(f));
    memset(vis,0,sizeof(vis));
    for(int i=1,x,y;i<=a;i++)
	{ 
        cin>>x>>y;
        q[qr].x=x;
        q[qr].y=y;
        qr++;
        vis[x][y]=1;
    }
    bfs();
    for(int i=1,x,y;i<=b;i++)
	{ 
        cin>>x>>y;
        cout<<f[x][y]<<endl; 
    }
    return 0;
}
//除了第一个点AC其他全RE了

回复

2 条回复,欢迎继续交流。

正在加载回复...