汪汪队,我需要你的帮助!
查看原帖
汪汪队,我需要你的帮助!
1238483
cqbzzlr楼主2024/8/16 14:14

蒟蒻P1506代码过样例,但0pts

求条,玄2关

#include<bits/stdc++.h>

using namespace std;

const int N = 1e4+5;

int ans;

int n,m;
char s[N][N];
int sx,sy,ex,ey;
int dx[] = {-1,1,0,0};
int dy[] = {0,0,-1,1};

void dfs(int x,int y)
{
//	cout << x << " " << y << endl;
	for(int i = 0;i < 4;i++)
	{
		int nx = x + dx[i];
		int ny = y + dy[i];
		if(nx >= 1 && nx <= n && ny >= 1 && ny <= m && s[nx][ny] != '*')
		{
			s[nx][ny] = '*';
			dfs(nx,ny);
		}
	}
}

int main()
{
	cin >> n >> m;
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			cin >> s[i][j];
		}
	}
	int ans = 0;
	for(int i = 1;i <= n;i++)
	{
		if(s[i][1] == '0')
		{
			dfs(i,1);
		}
		if(s[i][m] == '0')
		{
			dfs(i,m);
		}
	}
	for(int i = 1;i <= m;i++)
	{
		if(s[1][i] == '0')
		{
			dfs(1,i);
		}
		if(s[n][i] == '0')
		{
			dfs(n,i);
		}
	}	
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			if(s[i][j] == '0')
			{
				ans++;
			}
		}
	}
	cout << ans;	
}
2024/8/16 14:14
加载中...