不是,为啥会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;
}
这里空空如也


有帮助,赞一个