样例一直过不了,求调!!(很急)
查看原帖
样例一直过不了,求调!!(很急)
1188174
liaoxingyu楼主2025/7/3 10:00
#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;
}
2025/7/3 10:00
加载中...