Zadanie: LAB Labirynt

Transkrypt

Zadanie: LAB Labirynt
Zadanie: LAB
Labirynt
Autor zadania: Cezary Michalczyk. Plik źródłowy: LAB.cpp ; Limit pamięci: 32MB
Wybitni uczniowie wybitnie nudzą się na zajęciach, których materiał już od dawna mają opanowany
do perfekcji. Dlatego, aby spędzić ten czas kreatywnie, postanowili znaleźć sobie jakieś ciekawe zajęcie. Będą
rysowali prostokątne labirynty o wymiarach n na m, złożone z 0 i 1. Zera będą oznaczały miejsca, przez które
nie da się przejść, zaś jedynki - dokładnie przeciwnie, to miejsca będące fragmentem jakiejś drogi. Tak
przygotowane labirynty trafiają do rąk kolegów, których zadaniem jest sprawdzić, czy istnieje droga
przejścia z punktu P1(x1, y1) do punktu P2(x2, y2).
Ty jesteś oczywiście jednym z tych wybitnych! Zauważyłeś, że nie masz najmniejszego problemu z
przejściem przez labirynty o niewielkich rozmiarach, większe natomiast to już nie lada wyzwanie. Napisz
więc program, który będzie sprawdzał drogę typu 1-1 pomiędzy dwoma punktami w tablicy o zadanych
współrzędnych lub stwierdzi, że taka droga nie istnieje.
Wejście
Pierwszy wiersz standardowego wejścia zawiera dwie liczby naturalne n i m (1
,
1000),
oddzielone pojedynczym odstępem i oznaczające odpowiednio ilość wierszy i ilość kolumn tablicy.
Kolejne n wierszy zawiera 0 lub 1, po m w wierszu, oddzielone pojedynczymi odstępami, oznaczające
przejście lub jego brak.
Ostatnie dwa wiersze wejścia zawierają po dwie liczby naturalne, oznaczające współrzędne
punktów, między którymi szukamy połączenia typu 1-1. Odpowiednio: P1(x1, y1), P2(x2, y2) i
0
, , ,
. Należy zaznaczyć, że punkt w lewym górnym rogu tablicy zero-jedynkowej ma
współrzędne 0, 0 , współrzędne x-owe rosną w prawą stronę tablicy, zaś y-owe w dół.
Wyjście
Pierwszy i jedyny wiersz standardowego wyjścia powinien zawierać jedynie słowo "TAK", jeśli droga
jest możliwa do przejścia lub "NIE" w wypadku przeciwnym bez cudzysłowów .
Przykład
Dla danych wejściowych:
Natomiast dla danych:
78
00000110
10111100
10001000
11011110
01101000
01111000
00000000
01
60
78
00000010
10111100
10001000
11011110
00101000
01111000
00000000
01
60
Prawidłową odpowiedzią jest:
Prawidłową odpowiedzią jest:
TAK
NIE