Submission #1239744

#TimeUsernameProblemLanguageResultExecution timeMemory
1239744Noname_1900Tracks in the Snow (BOI13_tracks)C++20
100 / 100
946 ms45940 KiB
#include<bits/stdc++.h> using namespace std; const int NMAX = 4000; const int INFINI = 1000000; char tab[NMAX][NMAX]; int nbAVoir; int nbL, nbC; int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> nbL >> nbC; nbAVoir = 0; for(int l = 0; l < nbL; l++) { for(int c = 0; c < nbC; c++) { cin >> tab[l][c]; if(tab[l][c] != '.') nbAVoir++; } } // char dep = tab[0][0]; int nbTypes = 0; queue<pair<int, int>> casesActu; casesActu.push({0, 0}); while(casesActu.size()) { nbTypes ++; queue<pair<int, int>> proCases; while(casesActu.size()) { auto cas = casesActu.front(); casesActu.pop(); if(tab[cas.first][cas.second] == '.') continue; char couleur = tab[cas.first][cas.second]; tab[cas.first][cas.second] = '.'; for(int iD = 0; iD < 4; iD++) { int nouvL = cas.first+dir[iD][0], nouvC = cas.second+dir[iD][1]; if((nouvL < 0) || (nouvC < 0) || (nouvL >= nbL) || (nouvC >= nbC)) continue; if((tab[nouvL][nouvC] == '.')) continue; if(tab[nouvL][nouvC] == couleur) casesActu.push({nouvL, nouvC}); else proCases.push({nouvL, nouvC}); } } casesActu = proCases; } cout << nbTypes; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...