70分 求助!!!
  • 板块B3625 迷宫寻路
  • 楼主papala
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/20 15:43
  • 上次更新2024/7/20 16:30:03
查看原帖
70分 求助!!!
1191516
papala楼主2024/7/20 15:43
#include<bits/stdc++.h>
using namespace std;
const int N = 5100;
int n, m;
struct node {
	int x, y;
} p[N * N];
//queue<pair<int,int> >q;
//pair<int,int> p[N*N];
int head, tail;
char mp[N][N];
bool mk[N][N];
bool flag;
int dx[] = {0, -1, 0, 1}, dy[] = {-1, 0, 1, 0};
int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> mp[i][j]; 
		}
	}
	head = tail = 1; 
	p[tail].x = 1, p[tail].y = 1; 
	tail++;
	mk[p[head].x][p[head].y] = true;
	while (head<tail) {
		for (int i = 0; i < 4; i++) {
			int tx = p[head].x + dx[i];
			int ty = p[head].y + dy[i];
			if (tx < 1 || tx > m || ty < 1 || ty > n) {
				continue;
			}
			if (mp[tx][ty] != '#' && mk[tx][ty] == false) { 
				p[tail].x = tx, p[tail].y = ty ; 
				tail++;
				mk[tx][ty] = true; 
			}
			if (tx == m && ty == n) { 
				flag = true;
				break;
			}
		}
		if (flag) {
			break;
		}
		head++;
	}
	if(flag)cout<<"Yes";
	else cout<<"No";
	return 0;
}
2024/7/20 15:43
加载中...