样例不通过求助谢谢 (互关!)
查看原帖
样例不通过求助谢谢 (互关!)
726902
bcbgszyzh楼主2024/3/28 19:59
#include<bits/stdc++.h>
using namespace std;
bool vis[110][110];
char a[110][110]; 
int n,m,
dx[]={0,0,-1,1},
dy[]={-1,1,0,0};
int bfs(int x,int y){
	vis[x][y]=1;
	queue<pair<int,int> >que;
	que.push(make_pair(x,y));
	int cnt=1;
	while(!que.empty()){
		pair<int,int>f=que.front();
		que.pop();
		int ax=f.first,ay=f.second;
		for(int i=0;i<4;++i){
			int xx=ax+dx[i];
			int yy=ay+dy[i];
			if(xx<=0||xx>n||yy<=0||yy>m||vis[xx][yy]||a[xx][yy]=='0')continue;
			vis[xx][yy]=1;
			++cnt;
			que.push(make_pair(xx,yy));
		}
	}
	return cnt;
}
int main(){
	int ans=0;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){
		scanf("%s",a[i]);
	} 
	int mx=0;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
			if(a[i][j]!='0'){
				++ans;
				bfs(i,j);
			}
		}
	} 
	printf("%d",ans);
	return 0;
}
2024/3/28 19:59
加载中...