Submission #1234585

#TimeUsernameProblemLanguageResultExecution timeMemory
1234585darshitmittal777Tracks in the Snow (BOI13_tracks)C++20
47.50 / 100
2111 ms766444 KiB
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define MIN(a, b) ((a) < (b) ? (a) : (b))
using namespace std;

void solve(vector<vector<char>> &grid,char cur,int x, int y)
{
    if(x>=grid.size()||x<0||y>=grid[0].size()||y<0)
    return;
    if(grid[x][y]!=cur)
    return;   
    grid[x][y] = (grid[x][y]=='F')?'R':'F';
    solve(grid,cur,x,y+1);
    solve(grid,cur,x,y-1);
    solve(grid,cur,x+1,y);
    solve(grid,cur,x-1,y);
}

int single(vector<vector<char>> &grid)
{
    int c1 = 0,c2=0;
    for(int i=0;i<grid.size();i++)
    {
        for(int j=0;j<grid[0].size();j++)
        {
            if(grid[i][j]=='F')
            c1++;
            else if(grid[i][j]=='R')
            c2++;
        }
    }
    if(c1==0&&c2==0)
    return -1;
    else if(c1==0||c2==0)
    return 1;
    else 
    return 0;
}

int main()
{
    int h,w;cin>>h>>w;
    vector<vector<char>> grid(h,vector<char>(w));
    for(int i=0;i<h;i++)
    {
        for(int j=0;j<w;j++)
        {
            cin>>grid[i][j];
        }
    }
    if(single(grid)==-1)
    {
        cout<<0<<endl;
        return 0;
    }
    int ans = 1;
    while(single(grid)==0)
    {
        solve(grid,grid[0][0],0,0);
        ans++;
    }
    cout<<ans<<endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...