Module: Cerca in profondità. DFS


Problem

8 /12


DFS ricorsivo

Problem

Data una matrice di N (1 <= N <= 100) per M (1 <= M <= 100). La matrice contiene ‘.’ – celle vuote e ‘#’ – celle non visitabili. Puoi solo spostarti su, giù, sinistra e destra. Date q query: numero di riga e numero di colonna, se questa cella – ‘#’, poi diventa ‘.’, altrimenti – "#". Per ognuna delle q query, determina se la cella tx;ty è raggiungibile dalla cella Sx;Sy > . Output su ogni riga "Sì", se raggiungibile, e "No" - Altrimenti. È garantito che la cella Sx; Sy e cella tx; ty non sono ‘#’ cella in ogni richiesta.
Inserisci i dati.
Nella prima riga inserisci i numeri Sx (1 <= Sx <= 100), Sy (1 < = Sy <= 100), tx (1 <= tx <= 100), t >y (1 <= ty <= 100), N (1 <= N <= 100), M(1 <= M <= 100 ) e q (1 <= q <= 100). Le successive N righe danno una matrice dove ‘.’ – cella vuota e ‘#’ – una cella che non può essere visitata. Le successive q righe danno il numero di riga e il numero di colonna da modificare.
 
Uscita.
Stampa per ciascuna delle q query “Sì”, se dalla cella Sx; Sy nella cella tx; ty può essere colpito, “No” – altrimenti.
 
Input Uscita
1 1 2 3 3 3 2
.##
##.
####
1 2
2 2
No
 
Spiegazione:
Dopo la prima richiesta, la matrice sarà simile a questa:
.  .  #
# # .
###
Non c'è passaggio dal punto 1;1 al 2;3, quindi, stampiamo “No”.

Dopo la seconda richiesta, la matrice sarà simile a questa:
.  .  #
# .  .
###
C'è un passaggio dal punto 1;1 al 2;3, quindi emettiamo “Sì”. Il percorso che possiamo seguire è evidenziato.

(с) Vsevolod Shaldin