过样例,甚至过数据(输出的数字一模一样),但全WA
查看原帖
过样例,甚至过数据(输出的数字一模一样),但全WA
608775
Rorre_y楼主2023/8/16 08:37
#include<cstdio>
int n,m;
int ans[505][505];
char a[505][505];
int b1[4]={1,0,-1,0};
int b2[4]={0,1,0,-1};
void dfs(int x,int y){
	for(int i=0;i<4;i++){
		int xx=x+b1[i],yy=y+b2[i];
		if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]=='0'&&ans[xx][yy]==0){
			a[xx][yy]='*';
			ans[xx][yy]=1;
			dfs(xx,yy);
		}
	}
}
int main()
{
	//freopen("P1506_1.in","r",stdin);
	scanf("%d %d\n",&n,&m);
	char b;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%c",&a[i][j]);
		}
		scanf("%c",&b);
	}
	for(int i=1;i<=n;i++){
		if(a[i][1]=='0'){
			a[i][1]='*';
			dfs(i,1);
		}
	}
	for(int i=1;i<=m;i++){
		if(a[1][i]=='0'){
			a[1][i]='*';
			dfs(1,i);
		}
	}
	for(int i=1;i<=n;i++){
		if(a[i][m]=='0'){
			a[i][m]='*';
			dfs(i,m);
		}
	}
	for(int i=1;i<=m;i++){
		if(a[n][i]=='0'){
			a[n][i]='*';
			dfs(n,i);
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]=='0'){
				ans++;
			}
		}
	}
	printf("%d",ans);
}
2023/8/16 08:37
加载中...