为啥输出sum和bfs(x,y)得到的值不一样
还有提交答案说我数组越界不懂
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
typedef pair<int, int>pii;
queue<pii>q;
int dxx[10] = { -1,0,1,0};
int dyy[10] = {0,1,0,-1};
int t, n, m;
char tmp;
int a[105][105];
int x, y;
int ex, ey;
int sum;
int dist[105][105];
int bfs(int x, int y)
{
memset(dist, -1, sizeof dist);
q.push({ x,y });
dist[x][y] = 0;
while (!q.empty())
{
auto t = q.front();
q.pop();
for (int i = 0; i < 4; i++)
{
int dx = t.first + dxx[i];
int dy = t.second + dyy[i];
if (dx<1 || dy<1 || dx>n || dy>m)continue;
if (a[dx][dy] == 0)continue;
if (dist[dx][dy] > 0)continue;
dist[dx][dy] = dist[t.first][t.second] + 1;
q.push({ dx,dy });
if (dist[ex][ey]>0)return dist[ex][ey];
}
}
}
int main()
{
cin >> t;
for (int i = 1; i <= t; i++)
{
memset(a, 0, sizeof(a));
cin >> n >> m;
for (int j = 1; j <= n; j++)
{
for (int k = 1; k <= m; k++)
{
cin >> tmp;
if (tmp == 'S')
{
x = j;
y = k;
a[j][k] = 1;
}
if (tmp == 'E')
{
ex = j;
ey = k;
a[j][k] = 1;
}
if (tmp == '-')a[j][k] = 1;
if (tmp == '#')a[j][k] = 0;
}
}
sum = bfs(x, y);
if (sum > 0)cout << bfs(x,y);
else cout << "-1";
}
return 0;
}