不是,为啥会RE
2025-10-02 12:17:54
发布于:福建
2阅读
0回复
0点赞
#include<bits/stdc++.h>
#define int long long
using namespace std;
const long long N = 40;
struct pt{
long long y , x , s;
pt(){};
pt(long long a , long long b , long long c):y(a) , x(b) , s(c){};
};
char pts[N][N];
long long sy , sx;
bool vis[N][N];
long long y , x;//高宽
long long dir[4][2] = {{1 , 0} , {-1 , 0} , {0 , 1} , {0 , -1}};
long long bfs() {
queue<pt> que;
que.push(pt(sy , sx , 0));
while(!que.empty()){
pt p = que.front();
vis[sy][sx] = true;
que.pop();
if (pts[p.y][p.x] == '*') return p.s;
for (int i = 0 ; i <= 3 ; i++) {
long long ny = p.y + dir[i][0];
long long nx = p.x + dir[i][1];
long long ns = p.s + 1;
if (ny >= 1 && ny <= y && nx >= 1 && nx <= x && pts[ny][nx] != '#' && !vis[ny][nx]) {
que.push(pt(ny , nx , ns));
vis[ny][nx] = true;
}
}
}
return -1;
}
signed main() {
while(cin >> y >> x){//多组数据
if (y == 0 && x == 0) return 0;
for (int i = 1 ; i <= y ; i++) {
for (int j = 1 ; j <= x ; j++) {
cin >> pts[i][j];
if (pts[i][j] == '@') {
sy = i;
sx = j;
}
}
}
memset(vis , 0 , sizeof(vis));
printf("%lld\n" , bfs());
}
return 0;
}
这里空空如也
有帮助,赞一个