社区讨论
样例一直过不了,求调!!(很急)
P1506拯救oibh总部参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mcmqopan
- 此快照首次捕获于
- 2025/07/03 10:01 8 个月前
- 此快照最后确认于
- 2025/07/03 10:17 8 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int l,r,vis[505][505],ans;
char a[505][505];
struct stu{
int x,y;
};
int dx[4] = {1,-1,0,0};
int dy[4] = {0,0,1,-1};
void bfs(int x,int y){
queue<stu> q;
q.push({x,y});
vis[x][y] = 1;
while (!q.empty()){
x = q.front().x;
y = q.front().y;
q.pop();
for (int i = 0;i < 4;i ++){
int nx = x + dx[i];
int ny = y + dy[i];
if (nx>=1&&nx<=l&&ny>=1&&ny<=r&&vis[nx][ny]==0&&a[nx][ny]=='0'){
vis[nx][ny] = 1;
q.push ({nx,ny});
}
}
}
}
int main(){
cin >> l >> r;
for (int i = 1;i <= l;i ++){
for (int j = 1;j <= r;j ++){
cin >> a[i][j];
}
}
for (int i = 1;i <= l;i ++){
for (int j = 1;j <= r;j ++){
if (a[i][j] == '0'){
// vis[i][j] = 1;
bfs(i,j);
}
}
}
for (int i = 1;i <= l;i ++){
for (int j = 1;j <= r;j ++){
if (a[i][j] == '0' && vis[i][j] == 0){
ans ++;
}
}
}
// cout << endl;
// for (int i = 1;i <= l;i ++){
// for (int j = 1;j <= r;j ++){
// cout << vis[i][j] << ' ';
// }
// cout <<endl;
// }
// cout << endl;
cout << ans;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...