Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | verlab.in, verlab.out | Sursă | ONIS 2015, Runda 3 |
Autor | Vlad Manea | Adăugată de | |
Timp execuţie pe test | 0.05 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Verlab
În această problemă vrem să verificăm dacă un caroiaj este sau nu labirint. Un labirint este un caroiaj cu o serie de proprietăţi suplimentare:
- celulele adiacente pe verticală sau orizontală pot avea maxim un perete despărţitor, definit pentru una din celule,
- fiecare celulă de pe margine are pereţi care despart caroiajul de exterior pe fiecare latură cu exteriorul,
- între oricare două celule din caroiaj există exact un drum simplu format din paşi pe orizontală şi verticală între celule adiacente şi nedespărţite de perete pe latura comună.
Fiecare celulă este codificată ca un număr natural pe 4 biţi, unde biţii adevăraţi denotă, în ordine, existenţa unui perete pe direcţiile sus, dreapta, jos, stânga. De exemplu, numărul 5 = 0 × 23 + 1 × 22 + 0 × 21 + 1 × 20 denotă o celulă cu pereţi în dreapta şi stânga.
Date de intrare
În fişierul de intrare verlab.in sunt date numerele r şi c, dimensiunile caroiajului: linii şi apoi coloane.
Acestea sunt urmate de r × c numere între 0 şi 15, reprezentând celulele pe rânduri şi coloane. Numerele sunt precedate, separate şi urmate de oricâte caractere albe.
Date de ieşire
În fişierul de ieşire verlab.out se găseşte un singur număr: 1 pentru un caroiaj care este labirint, sau 0 pentru un caroiaj care nu este labirint. Numărul este urmat de caracterul sfârşit de linie.
Restricţii
- 1 <= r, c <= 1.000
Exemplu
verlab.in | verlab.out |
---|---|
2 2 13 12 3 6 | 1 |
Explicaţie
Caroiajul are 4 celule, distribuite pe 2 rânduri şi 2 coloane. Celula din stânga sus cu valoarea 13 are trei pereţi: în sus, dreapta şi stânga. Celula din dreapta sus cu valoarea 12 are doi pereţi: în sus şi în dreapta. Celula din dreapta jos cu valoarea 6 are doi pereţi: în dreapta şi în jos. Celula din stânga jos cu valoarea 3 are doi pereţi: în jos şi în stânga. De observat cum peretele drept al celulei din stânga sus o desparte pe aceasta de celula din dreapta sus.