[USACO09OCT]Invasion of the Milkweed G
题解
本题一看就是一道裸的BFS,但是有一个大坑点
所有的x,y,n,m坐标都是反的!!!
所以把 \(x\) 改成 \(y\),把 \(n\) 改成 \(m\) 即可
Code:
#include<bits/stdc++.h>
using namespace std;
const int N=150;
int n,m,mx,my,f[N][N],ans;
char a[N][N];
struct kkk
{
int y,x,t;
};
queue<kkk>q;
int dx[]={0,1,0,-1,1,1,-1,-1};
int dy[]={1,0,-1,0,1,-1,1,-1};
void bfs(int y,int x)
{
f[y][x]=1;
q.push(kkk{y,x,0});
while(!q.empty())
{
kkk k=q.front();q.pop();
ans=k.t;
for(int i=0;i<=7;i++)
{
int tx=k.x+dx[i],ty=k.y+dy[i];
if(a[ty][tx]=='.'&&!f[ty][tx])
f[ty][tx]=1,q.push(kkk{ty,tx,k.t+1});
}
}
cout<<ans;
}
int main()
{
scanf("%d%d%d%d",&n,&m,&mx,&my);
for(int i=m;i>=1;i--)
for(int j=1;j<=n;j++)
cin>>a[i][j];
bfs(my,mx);
return 0;
}