社区讨论
bfs test8 WA,求调
CF1063BLabyrinth参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo1g922v
- 此快照首次捕获于
- 2023/10/22 20:33 2 年前
- 此快照最后确认于
- 2023/11/02 20:57 2 年前
Test8 data
CPP2000 2000
1 2
1000000000 1000000000
*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*.....*......
CPP#include <bits/stdc++.h>
using namespace std;
const int N = 2010;
typedef long long lg;
struct POINT{
int x,y;lg ll,rr;
}que[N * 4];
int n,m,r,c,x,y,cnt = 0;
char ditu[N][N];int vis[N][N];
int dir[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};
void bfs() {
int head = 0,tail = 1;
que[1] = {r,c,0,0};
vis[r][c] = 1;
int flag;
while(head < tail) {
head++;
for(int i = 0;i < 4;i++) {
flag = 0;
int nx = que[head].x + dir[i][0],ny = que[head].y + dir[i][1];
if(nx < 1 || ny < 1 || nx > n || ny > m || vis[nx][ny] || ditu[nx][ny] == '*') continue;
if(i == 2) {
if(que[head].ll >= x) continue;
else flag = 2;
}
if(i == 3) {
if(que[head].rr >= y) continue;
else flag = 3;
}
tail++;
vis[nx][ny] = 1;
if(flag == 2) que[tail] = {nx,ny,que[head].ll + 1,que[head].rr};
else if(flag == 3) que[tail] = {nx,ny,que[head].ll,que[head].rr + 1};
else {
que[tail] = {nx,ny,que[head].ll,que[head].rr};
}
}
}
}
int main(){
cin >> n >> m >> r >> c >> x >> y;
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= m;j++) {
cin >> ditu[i][j];
}
}
bfs();
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= m;j++) {
if(vis[i][j]) cnt++;
}
}
cout << cnt << endl;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...