Submission #1204072

#TimeUsernameProblemLanguageResultExecution timeMemory
120407212345678Zoo (COCI19_zoo)C++20
110 / 110
38 ms5448 KiB
#include <bits/stdc++.h>

using namespace std;

const int nx=1e3+5;

int n, m, di[4]={1, 0, 0, -1}, dj[4]={0, 1, -1, 0}, c[100], cur, ans, vs[nx][nx];
char mp[nx][nx];

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>m;
    for (int i=1 ;i<=n; i++) for (int j=1; j<=m; j++) cin>>mp[i][j];
    c['T']=0;
    c['B']=1;

    cur=c[mp[1][1]];
    queue<pair<int, int>> q, nq;
    vs[1][1]=1;
    q.push({1, 1});
    while (!q.empty())
    {
        ans++;
        while (!q.empty())
        {
            auto [i, j]=q.front();
            q.pop();
            for (int k=0; k<4; k++)
            {
                int ni=i+di[k], nj=j+dj[k];
                if (vs[ni][nj]) continue;
                vs[ni][nj]=1;
                if (mp[ni][nj]!='B'&&mp[ni][nj]!='T') continue;
                if (c[mp[ni][nj]]==cur) q.push({ni, nj});
                if (c[mp[ni][nj]]==!cur) nq.push({ni, nj});
            }
        }
        cur=!cur;
        //cout<<"debug "<<nq.size()<<'\n';
        q=nq;
        while (!nq.empty()) nq.pop();
    }
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...