0pts,RE
查看原帖
0pts,RE
1329138
luogu_hezhenmin1楼主2024/9/28 17:28

rt

#include<bits/stdc++.h>
using namespace std;
int n,cnt=0;
bool vis[1002][1002],vk[1002][1002];
queue<pair<int,int> >q;
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			char c;
			vis[i][j]=0;vk[i][j]=0;
			cin>>c;
			if(c=='#') vis[i][j]=1;
		}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(vis[i][j]==1 and vk[i][j]==0){
				vk[i][j]=1;
				q.push({i,j});
				while(!q.empty()){
                    pair<int,int>bk=q.front();q.pop();
					int x=bk.first,y=bk.second;
					bool f=1;
					for(int k=0;k<=3;i++){
					    int nx=x+dx[i],ny=y+dy[i];
					    if(!vis[nx][ny]) f=0;
					    if(nx>0 and ny>0 and nx<=n and ny<=n and vis[nx][ny]==1 and !vk[nx][ny]){
						   q.push({nx,ny});
						   vk[nx][ny]=1;
					    }
					}
					if(f) cnt++;
				}
			}
	cout<<cnt;
	return 0;
}
2024/9/28 17:28
加载中...