Module: Cari secara mendalam. DFS


Problem

8 /12


DFS rekursif

Problem

Diberi matriks N (1 <= N <= 100) oleh M (1 <= M <= 100). Matriks mengandungi ‘.’ – sel kosong dan ‘#’ – sel yang tidak boleh dilawati. Anda hanya boleh bergerak ke atas, bawah, kiri dan kanan. Diberi pertanyaan q: nombor baris dan nombor lajur, jika sel ini – ‘#’, kemudian ia menjadi ‘.’, jika tidak – ‘#’. Untuk setiap pertanyaan q, tentukan sama ada sel tx;ty boleh dicapai daripada sel Sx;Sy . Output pada setiap baris “Ya”, jika boleh dicapai dan “Tidak” - jika tidak. Ia dijamin bahawa sel Sx; Sy dan sel tx; ty bukan ‘#’ sel dalam setiap permintaan.
Input data.
Pada baris pertama masukkan nombor Sx (1 <= Sx <= 100), Sy (1 < = Sy <= 100), tx (1 <= tx <= 100), ty (1 <= ty <= 100), N (1 <= N <= 100), M(1 <= M <= 100 ) dan q (1 <= q <= 100). Garis N seterusnya memberikan matriks di mana ‘.’ – sel kosong dan ‘#’ – sel yang tidak boleh dilawati. Baris q seterusnya memberikan nombor baris dan nombor lajur untuk ditukar.
 
Output.
Cetak untuk setiap pertanyaan q “Ya”, jika dari sel Sx; Sy ke dalam sel tx; ty boleh dipukul, “Tidak” – sebaliknya.
 
 
Penjelasan:
Selepas permintaan pertama, matriks akan kelihatan seperti ini:
.  .  #
# # .
####
Tiada petikan dari titik 1;1 hingga 2;3, oleh itu, kami mencetak “Tidak”.

Selepas permintaan kedua, matriks akan kelihatan seperti ini:
.  .  #
# .  .
####
Terdapat petikan dari titik 1;1 hingga 2;3, jadi kami mengeluarkan “Ya”. Laluan yang boleh kita ikuti diserlahkan.

(с) Vsevolod Shaldin
 
Input Output
1 1 2 3 3 3 2
.##
##.
##
1 2
2 2
Tidak
Ya