样例过了,但是全WA,救命
查看原帖
样例过了,但是全WA,救命
719978
DYYqwq楼主2022/8/6 22:44

我真没过,AC的是题解,我看我的思路和有一篇题解差不多,就交了一下那个题解,A了,但我和题解对比,好像没啥区别啊?救救我呗QAQ

#include<bits/stdc++.h>
using namespace std;
char s[510][510];
int n , m , ans = 0;;
int dx[4] = {0 , 0 , 1 , -1};
int dy[4] = {1 , -1 , 0 , 0};
int mp[510][510];
bool vis[510][510];
bool in(int x , int y)
{
	return x >= 1 && x <= n && y >= 1 && y <= m;
}
void dfs(int x , int y)
{
	for(int i = 0 ; i < 4 ; i ++)
	{
		int nx = x + dx[i];
		int ny = y + dy[i];
		if(!vis[nx][ny] && in(nx , ny) && mp[nx][ny] == 0)
		{
			vis[nx][ny] = true;
			mp[nx][ny] = 2;
			dfs(nx , ny);
		}
	}
}
int main()
{
	scanf("%d%d" , &n , &m);
	for(int i = 1 ; i <= n ; i ++)
	{
		for(int j = 1 ; j <= m ; j ++)
		{
			cin >> s[i][j];
			if(s[i][j] == '0')
				mp[i][j] = 0;
			else
				mp[i][j] = 1;
		}
	}
	dfs(1 , 1);
	for(int i = 1 ; i <= n ; i ++)
	{
		for(int j = 1 ; j <= m ; j ++)
		{
			if(mp[i][j] == 0)
				ans ++;
		}
	}
	printf("%d" , ans);
	return 0;
}
2022/8/6 22:44
加载中...