Cerința
Se dă o matrice binara cu N linii și M coloane. Celulele cu numărul 0 sunt libere și se pot traversa. Celulele cu numărul 1 sunt ocupate și nu se pot traversa. Pentru K poziții date, se cere să se determine drumul de lungime minimă care pleacă de la poziția (i1, j1) și trece prin toate cele K poziții intermediare (nu contează în ce ordine), ajungând în final în poziția (i2, j2).
Date de intrare
Fișierul de intrare lee3.in conține pe prima linie numerele N și M.
Pe următoarele N linii vor fi câte M numere, reprezentand structura matricei.
Pe următoarea linie se vor afla patru numere: i1, j1, i2 si j2 cu semnificația din enunț. Pe următoarea linie se află numărul K, urmat de K perechi de numere (i, j) după cum reiese și din enunț.
Date de ieșire
Fișierul de ieșire lee3.out va conține pe prima linie numărul C, reprezentând numărul minim de poziții din matrice prin care se va trece începând cu (i1, j1), pentru a trece prin toate cele K poziții și terminând în poziția (i2, j2).
Pe următoarele linii se vor afișa K+2 perechi de numere (i, j), reprezentând ordinea în care sunt parcurse cele K poziții, inclusiv poziția inițială și cea finală. Indicii pozițiilor se separă prin virgula. Dacă există mai multe trasee de aceeași lungime minimă, atunci se va afișa oricare.
Restricții și precizări
1 ≤ N, M ≤ 7501 ≤ K ≤ 191 ≤ i1, i2, i[k] ≤ N1 ≤ j1, j2, j[k] ≤ M- Se garantează că există soluție pentru toate testele
- Pentru 10% din teste:
K ≤ 7 - Pentru restul testelor: nicio restricție suplimentară
Exemplu:
lee3.in
4 5 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 4 4 3 1 5 3 2 3 4
lee3.out
12 1,1 1,5 3,2 3,4 4,4
Explicație
Se pleacă din poziția (1, 1) și se merge în poziția (1, 5), apoi în (3, 2, apoi în (3, 4) și apoi ajunge la destinație în (4, 4).