Submission #902700

#TimeUsernameProblemLanguageResultExecution timeMemory
902700Keshav211Tracks in the Snow (BOI13_tracks)C++14
45.31 / 100
2094 ms1048576 KiB
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
#define grid(n,m) for (ll i=1;i<=n;i++){for (ll j=1;j<=m;j++) cin>>graph[i][j];}
#define vll vector<ll>
#define qll queue<ll>
#define pll pair<ll,ll>
#define str string
#define pb push_back
#define ll long long
using namespace std;
const ll inf=2*1e5+1;
const ll graph_size=4000;
// Fast Input/Output
void fastio(){
    ios_base::sync_with_stdio(0);
    cin.tie(nullptr);
}
// File Input/Output
str fileio(const string&filePath=__FILE__){
    size_t lastSlash=filePath.find_last_of('/');
    size_t lastDot=filePath.rfind('.');
    return filePath.substr(lastSlash+1,lastDot-lastSlash-1);
}
ll n,m;
// Floodfill
ll row_num,col_num;
char graph[graph_size+2][graph_size+2];
vector<pll> directions={{0,-1},{-1,0},{1,0},{0,1}};
bool floodfill_visited[graph_size+2][graph_size+2];
vector<pll> path;
ll curr=0;
void floodfill_dfs(pll coord,char color){
    ll x=coord.first;
    ll y=coord.second;
    if (x==3 and y==4){
        ll z=1;
    }
    if ((graph[x][y]!=color and graph[x][y]!='*') or x<=0 or x>n or y<=0 or y>m or floodfill_visited[x][y]){
        return;
    }
    floodfill_visited[x][y]=1;
    if (graph[x][y]!='*'){
        curr++;
    }
    graph[x][y]='*';
    path.pb({x,y});
    for (auto i:directions){
        floodfill_dfs({x+i.first,y+i.second},color);
    }
}
int main(){
    // auto start_time=chrono::steady_clock::now();
    fastio();
    // str filename=fileio();
    // ifstream cin(filename+".in");
    // ofstream cout(filename+".out");
    ll t=1;
    // cin>>t;
    while (t--){
        cin>>n>>m;
        grid(n,m);
        ll tracks=0;
        for (ll i=1;i<=n;i++){
            for (ll j=1;j<=m;j++){
                if (graph[i][j]!='.'){
                    tracks++;
                }
            }
        }
        char animal=graph[1][1];
        ll ans=0;
        while (curr<tracks){
            ans++;
            floodfill_dfs({n,m},animal);
            for (auto i:path){
                floodfill_visited[i.first][i.second]=0;
            }
            path.clear();
            if (animal=='F'){
                animal='R';
            }
            else{
                animal='F';
            }
        }
        cout<<ans<<"\n";
    }
    // auto end_time=chrono::steady_clock::now();
    // auto elapsed_time=chrono::duration_cast<chrono::milliseconds>(end_time-start_time);
    // cout<<"Elapsed time: "<<elapsed_time.count()<<" milliseconds\n";
}

Compilation message (stderr)

tracks.cpp: In function 'void floodfill_dfs(std::pair<long long int, long long int>, char)':
tracks.cpp:38:12: warning: unused variable 'z' [-Wunused-variable]
   38 |         ll z=1;
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...