蒟蒻的求助!
  • 板块P1767 家族
  • 楼主ZYL2010
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/10/13 20:08
  • 上次更新2023/11/4 03:53:55
查看原帖
蒟蒻的求助!
376397
ZYL2010楼主2021/10/13 20:08
#include <bits/stdc++.h>
#include<iostream>
#include<queue>
using namespace std;
int n,m,cont;
struct point{
	int x;int y;
};
string a[10000];
int vis[10000][10000];
int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
queue<point> q;
void bfs(int x,int y){
	point nx;
	nx.x=x;
	nx.y=y;
	q.push(nx);
	while(!q.empty()){
		point tmp=q.front();
		for(int i=0;i<4;i++){
			point nb=tmp;
			nb.x+=d[i][0];
			nb.y+=d[i][1];
			if(nb.x>=0&&nb.x<(int)a[nb.x].size()&&nb.y>=0&&(int)a[nb.x].size()>nb.y&&vis[nb.x][nb.y]==0&&a[nb.x][nb.y]!='*'){
				q.push(nb);
			}
		}
		
		vis[tmp.x][tmp.y]=cont;
		q.pop();	
	}	
}
int main(){

	cin>>n;
	
	for(int i=0;i<=n;i++){
		getline(cin,a[i]);
	
	}
	for(int i=0;i<n;i++)
		for(int j=0;j<(int)a[i].size();j++){
			if(vis[i][j]==0&&a[i][j]!='*'){
				cont++;
				bfs(i,j);
			}
			
	}
	cout<<cont;
	return 0;
}
2021/10/13 20:08
加载中...