样例已过但无测试点1的分数,求调
查看原帖
样例已过但无测试点1的分数,求调
1100140
Ryoo楼主2024/6/1 11:13
#include <bits/stdc++.h>
using namespace std;
int n,m,dirx[4] = {0,1,0,-1}, diry[4] = {1,0,-1,0},ans;
char a[105][105];
void bfs(int x,int y) {
	ans++;
	int head = 0, tail = 1;
	int h[10025][2];
	memset(h,0,sizeof(h));
	h[1][0] = x;h[1][1] = y;
	while(head < tail) {
		head++;
		for(int i = 0; i <= 3; i++ ) {
			int xi = h[head][0] + dirx[i],yi = h[head][1] + diry[i];
			if(xi >= 1 && xi <= m && yi >= 1 && yi <= n && a[yi][xi] != '0') {
				tail++;
				h[tail][0] = xi;h[tail][1] = yi;
				a[yi][xi] = '0';
			}
		}
	} 
}
int main() {
	memset(a,'0',sizeof(a));
	scanf("%d%d", &n,&m);
	getchar();
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= m; j++) {
			scanf("%c", &a[i][j]);
		}
		getchar();
	}
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= m; j++) {
			if(a[i][j] != '0') bfs(j,i);
		}
	}
	//int k = 4;
	printf("%d", ans);
	return 0;
}
2024/6/1 11:13
加载中...