求助,第七个数据点TLE,别的都是AC
查看原帖
求助,第七个数据点TLE,别的都是AC
916022
BikiniBottomTree楼主2024/4/6 00:30
#include<iostream>
  
#include<algorithm>
  
#include<cstring>
  
#include<queue>

using namespace std;

typedef pair<int, int>PII;

const int N = 2510;

int n, m;

char g[N][N];
  
int gi[N][N];
  
int dx[4] = { 0,-1,1,0 }, dy[4] = { 1,0,0,-1 };

void flood_fill(int sx, int sy) {
  
	queue<PII>q;
	q.push({ sx, sy });

	while (q.size()) {
		auto t = q.front();
		q.pop();
		for (int i = 0; i < 4; i++)
		{
			gi[t.first][t.second] = 0;
			int a = t.first + dx[i], b = t.second + dy[i];
			if (gi[a][b] == 2) {
				q.push({ a,b });
			}
		}
	    }
}

int main() {
                              
	cin >> n >> m;

	for(int i=1;i<=n;i++)
		for (int j = 1; j <= m; j++) {
			cin >> g[i][j];
		}

	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++) {
			if (g[i][j] == '0')gi[i][j] = 0;
			else gi[i][j] = 1;
		}

	for (int i = 0; i <= n + 1; i++)
		for (int j = 0; j <= m + 1; j++)
			if (gi[i][j] == 0)gi[i][j] =2;

	flood_fill(0, 0);

	int cnt = 0;

	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
			if (gi[i][j] == 2)cnt++;
	}

	cout << cnt << endl;

	return 0;

}
2024/4/6 00:30
加载中...