#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 dejaVu[NMAX][NMAX];
void parcourir(int l, int c, char typeActu, int iDejaVu)
{
if((l < 0) || (c < 0) || (l >= nbL) || (c >= nbC)) return;
if(dejaVu[l][c] == iDejaVu) return;
dejaVu[l][c] = iDejaVu;
// cout << l << " " << c << "\n";
if((tab[l][c] == typeActu))
{
nbAVoir--;
tab[l][c] = 'T';
}
else if(tab[l][c] != 'T') return;
for(int iD = 0; iD < 4; iD++)
{
parcourir(l+dir[iD][0], c+dir[iD][1], typeActu, iDejaVu);
}
}
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;
while(nbAVoir)
{
nbTypes++;
parcourir(0, 0, dep, nbTypes);
if(dep == 'F') dep = 'R';
else dep = 'F';
}
cout << nbTypes;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |