社区讨论
? ? ? ? ?
P2298Mzc和男家丁的游戏参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi85x2bo
- 此快照首次捕获于
- 2025/11/21 09:09 4 个月前
- 此快照最后确认于
- 2025/11/21 09:09 4 个月前
自己电脑WA了,洛谷过了,查了半天QAQ。咋回事儿
CPP#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
const int dx[4] = {1, 0,-1, 0};
const int dy[4] = {0, 1, 0,-1};
char ma[2005][2005];
int ans[2005][2005];
struct point {
int x;
int y;
};
queue<point> q;
int main() {
memset(ans,-1,sizeof(ans));
int n,m;
scanf("%d%d",&n,&m);
for(int i = 1; i <= n; i++) {
scanf("%s",ma[i] + 1);
for(int j = 1; j <= m; j++) {
if(ma[i][j] == 'm') {
point cur;
cur.x = i;
cur.y = j;
q.push(cur);
ans[i][j] = 0;
}
}
}
while(!q.empty()) {
point cur = q.front();
for(int i = 0; i < 4; i++) {
point a;
a.x = cur.x + dx[i];
a.y = cur.y + dy[i];
if(a.x > n||a.y > m)continue;
if(ans[a.x][a.y] == -1&&ma[a.x][a.y] != '#') {
ans[a.x][a.y] = ans[cur.x][cur.y]+1;
q.push(a);
}
if(ma[a.x][a.y] == 'd') {
cout<<ans[a.x][a.y]<<endl;
return 0;
}
}
q.pop();
}
cout<<"No Way!"<<endl;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...