Submission #344788

#TimeUsernameProblemLanguageResultExecution timeMemory
344788JovanK26Tracks in the Snow (BOI13_tracks)C++14
2.19 / 100
37 ms18668 KiB
#include <bits/stdc++.h>

using namespace std;
int n,m;
string mat[4001];
int co[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
vector<pair<int,int> > pt[2];
int rez=0;
bool check(int i,int j)
{
    if(i<0 || i>=n || j<0 || j>=m || mat[i][j]=='.')return 0;
    return 1;
}
void dfs(int i,int j)
{
    char cur=mat[i][j];
    mat[i][j]='.';
    for(int i=0;i<4;i++)
    {
        int c1=i+co[i][0];
        int c2=j+co[i][1];
        if(!check(c1,c2))
        {
            continue;
        }
        if(mat[c1][c2]==cur)
        {
            dfs(c1,c2);
        }
        else
        {
            pt[rez&1^1].push_back({c1,c2});
        }
    }
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    for(int i=0;i<n;i++)
    {
        cin >> mat[i];
    }
    pt[rez&1].push_back({0,0});
    while(pt[rez&1].size())
    {
        for(pair<int,int> p : pt[rez&1])
        {
            if(check(p.first,p.second))
            {
                dfs(p.first,p.second);
            }
        }
        pt[rez&1].clear();
        rez++;
    }
    cout << rez;
    return 0;
}

Compilation message (stderr)

tracks.cpp: In function 'void dfs(int, int)':
tracks.cpp:32:19: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
   32 |             pt[rez&1^1].push_back({c1,c2});
      |                ~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...