#include #include #define SVETLO '#' #define TMA '.' #define MAX 1000 typedef struct { int x, y; } souradnice; int vyska, sirka; char okna[MAX][MAX+2]; // Aby se vešly \n a \0 na konci řádku souradnice fronta[MAX*MAX]; // Fronta a její čtecí a zápisový index int f_cteni, f_zapis; int max = 0; // Největší zatím nalezená plocha // Prozkoumá políčko a pokud je rozsvícené, přidá ho do fronty void zkoumej(int x, int y) { if (x >= 0 && x < vyska && y >= 0 && y < sirka && okna[y][x] == SVETLO) { okna[y][x] = TMA; fronta[f_zapis++] = (souradnice) { x, y }; } } void projdi(int x, int y) { zkoumej(x, y); int plocha = 0; while (f_cteni < f_zapis) { souradnice s = fronta[f_cteni++]; plocha++; zkoumej(s.x-1, s.y); zkoumej(s.x+1, s.y); zkoumej(s.x, s.y-1); zkoumej(s.x, s.y+1); } if (plocha > max) max = plocha; } int main(void) { // Načteme vstup scanf("%d %d\n", &sirka, &vyska); for (int y = 0; y < vyska; y++) scanf("%s", okna[y]); // Postupně hledáme rozsvícené oblasti for (int y = 0; y < vyska; y++) for (int x=0; x < sirka; x++) { if (okna[y][x] == SVETLO) projdi(x, y); } printf("%d\n",max); return 0; }