为什么构造函数会报错?
#include<bits/stdc++.h>
using namespace std;
const int MAXN=100;
const int dx[]={1,0,-1,0};//x对于下、右、上、左四个方向的偏移量
const int dy[]={0,1,0,-1};//y对于下、右、上、左四个方向的偏移量
struct P
{
int x,y;
P(int x,int y) :x(x),y(y){}
}q[MAXN*MAXN];
int f,r,n,m,dis[MAXN][MAXN];
bool st[MAXN][MAXN],g[MAXN][MAXN];
int bfs()
{
q[r++]={1,1},st[1][1]=1,dis[1][1]=1;
while (f!=r)
{
P tmp=q[f++];
if (tmp.x==n&&tmp.y==m) return dis[tmp.x][tmp.y];
for (int i=0;i<4;i++)
{
int x=tmp.x+dx[i],y=tmp.y+dy[i];
if (x<1||x>n||y<1||y>m) continue;//判断越界
if (st[x][y]||!g[x][y]) continue;
q[r++]={x,y};
st[x][y]=1;
dis[x][y]=dis[tmp.x][tmp.y]+1;
}
}
return 0;
}
int main()
{
//freopen("Input.txt","r",stdin);
//freopen("Output.txt","w",stdout);
cin>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
char c;
cin>>c;
if (c=='.') g[i][j]=1;
}
cout<<bfs()<<endl;
return 0;
}