样例都没过,我是个_____
查看原帖
样例都没过,我是个_____
670584
Zhangikun楼主2023/4/26 22:15
#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,ans[505][505]={0};
struct ikun
{
  int x,y;
  friend istream&operator>>(istream&in,ikun&ik)//重载cin
  {
    in>>ik.x>>ik.y;
    return in;
  }
};
bool f[505][505];
void bfs(queue<ikun>q)
{
  while(q.size())
  {
    ikun cur=q.front();
    q.pop();
    if(f[cur.x][cur.y])continue;
    f[cur.x][cur.y]=1;
    int x=cur.x,y=cur.y;
    if(x!=1&&f[x-1][y]==0)
    {
      ans[x-1][y]=ans[x][y]+1;
      q.push({x-1,y});
    }
    if(x!=n&&f[x+1][y]==0)
    {
      ans[x+1][y]=ans[x][y]+1;
      q.push({x+1,y});
    }
    if(y!=1&&f[x][y-1]==0)
    {
      ans[x][y-1]=ans[x][y]+1;
      q.push({x,y-1});
    }
    if(y!=m&&f[x][y+1]==0)
    {
      ans[x][y+1]=ans[x][y]+1;
      q.push({x,y+1});
    }
  }
  return;
}
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0),cout.tie(0);
  cin>>n>>m>>a>>b;
  queue<ikun>q;
  while(a--)
  {
    ikun ik;
    cin>>ik;
    q.push(ik);
  }
  bfs(q);
  while(b--)
  {
    ikun ik;
    cin>>ik;
    cout<<ans[ik.x][ik.y]<<"\n";
  }
  return 0;
}
2023/4/26 22:15
加载中...