Labirintul EscapeLight este reprezentat printr-o matrice de dimensiuni , unde fiecare celulă reprezintă o cameră. Fiecare cameră poate fi de unul dintre următoarele tipuri:
- Tipul : cameră cu bec stins,
- Tipul : cameră cu bec aprins,
- Tipul : cameră fără bec,
- Tipul : cameră echipată cu un întrerupător.
Camerele de tip sunt conectate la becuri din alte camere de tip 0 sau 1. Când cineva intră într-o cameră cu întrerupător, are posibilitatea să treacă mai departe fără a-l act, iona sau să-l apese. Apăsarea întrerupătorului inversează starea tuturor becurilor conectate (becurile aprinse se sting, iar cele stinse se aprind).
Andrei pornește dintr-o cameră aflată la coordonatele și trebuie să ajungă la o cameră situată la , deplasându-se exclusiv prin camere luminoase (adică, camerele în care becul este aprins). Scopul este de a găsi drumul de distanță minimă, măsurat în numărul de camere parcurse, ținând cont de posibilitatea de a utiliza întrerupătoarele pentru a schimba starea luminilor.
Date de intrare
Prima linie a fișierului de intrare conține două numere întregi și , reprezentând numărul de linii și coloane ale labirintului.
Următoarele linii conțin câte numere, separate prin spații, fiecare reprezentând tipul camerei:
- — cameră cu bec stins,
- — cameră cu bec aprins,
- — cameră fără bec,
- — cameră cu întrerupător.
A doua secțiune a inputului este formată dintr-o linie care conține patru numere întregi: și , reprezentând coordonatele camerei de start și ale camerei de destinație.
Următoarea linie conține un număr întreg , reprezentând numărul de conexiuni și un număr întreg , reprezentând numărul de camere de tip .
Fiecare din următoarele linii conține patru numere întregi: , indicând că întrerupătorul din camera de coordonate este conectat la becul din camera de coordonate .
Date de ieșire
Programul va afișa un singur număr, reprezentând numărul minim de camere parcurse pentru a ajunge de la poziția de start la poziția de destinație, ținând cont de posibilitatea de a utiliza întrerupătoarele.
Restricții și precizări
- Pentru fiecare conexiune:
- Conexiunile se vor face doar între camerele de tip (întrerupătoare) și camerele de tip sau .
- Camerele de tip sunt considerate mereu luminoase.
- Se garantează existența unei soluții.
# | Puncte | Restricții |
---|---|---|
1 | 10 | |
2 | 10 | |
3 | 10 | . |
4 | 15 | . |
5 | 55 | Pentru restul testelor se respectă restricțiile generale. |
Exemplu
escapelight.in
3 3
1 0 2
3 1 0
2 0 1
1 1 3 3
2 1
2 1 1 2
2 1 3 2
escapelight.out
5
Explicație
În exemplul de mai sus, labirintul are linii și coloane. Andrei începe din camera , care este luminată (tipul ), iar destinația este camera , tot luminată (tipul ). Deoarece unele camere inițial sunt întunecate, Andrei trebuie să utilizeze întrerupătorul din camera (tipul ) pentru a aprinde becurile din camerele și , astfel încât să îi permită accesul la o cale validă. Drumul minim găsit are camere parcurse.