제출 #1290163

#제출 시각아이디문제언어결과실행 시간메모리
1290163AbdullahIshfaqTracks in the Snow (BOI13_tracks)C++20
100 / 100
470 ms224132 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MOD 998244353
const int N = 4002, cd[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
ll n, m, d[N][N], mx = 1;
char c[N][N];
deque<pair<ll, ll>> q;
void solve()
{
	cin >> n >> m;
	for (int i = 0; i < n; i++)
		cin >> c[i];
	d[0][0] = 1;
	q.push_back({0, 0});
	while (!q.empty())
	{
		ll x, y;
		x = q.front().first;
		y = q.front().second;
		q.pop_front();
		mx = max(mx, d[x][y]);
		for (int i = 0; i < 4; i++)
		{
			ll nx = x + cd[i][0], ny = y + cd[i][1];
			if (nx < 0 or nx >= n or ny < 0 or ny >= m or c[nx][ny] == '.' or d[nx][ny])
			{
				continue;
			}
			if (c[nx][ny] == c[x][y])
			{
				d[nx][ny] = d[x][y];
				q.push_front({nx, ny});
			}
			else
			{
				d[nx][ny] = d[x][y] + 1;
				q.push_back({nx, ny});
			}
		}
	}
	cout << mx << '\n';
}
int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	ll t = 1;
	// cin >> t;
	for (ll i = 1; i <= t; i++)
	{
		solve();
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...