DevLab

Qo Lövhəsində Ərazilərin Sayılması

Çətin
graphbfsdfsgridconnected-components
3000 ms
256 MB

Qo (həmçinin baduk və ya vey-çi adlanır) oyununda oyunçu öz daşları ilə boş kəsişmələri (intersections) tamamilə əhatə edərək xal qazanır. Bir oyunçunun daşları ilə tamamilə əhatə olunmuş boş kəsişmələr çoxluğu həmin oyunçunun ərazisi (territory) adlanır.

Sizin vəzifəniz verilmiş lövhədəki əraziləri və onların sahiblərini tapmaqdır.

(Fərz edə bilərsiniz ki, rəqibin tamamilə mühasirəyə alınmış və "ölü" sayılan daşları artıq lövhədən çıxarılıb.)

Daha dəqiq desək: bir boş kəsişmə yalnız o halda oyunçunun ərazisinə aid edilir ki, onun bütün ortoqonal qonşuları (yuxarı, aşağı, sol, sağ – diaqonal qonşular sayılmır) ya həmin oyunçunun daşlarıdır, ya da artıq eyni əraziyə aid olan digər boş kəsişmələrdir.

Giriş verilənləri:

Birinci sətirdə sorğunun növünü bildirən Q tam ədədi verilir.

  • Q = 1 – tək koordinat sorğusu.

  • Q = 2 – bütün lövhənin analizi.

İkinci sətirdə lövhənin sətir (R) və sütun (C) sayını bildirən iki tam ədəd verilir.

Növbəti R sətrin hər birində lövhəni təsvir edən C sayda simvol verilir:

  • B – qara daş

  • W – ağ daş

  • . – boş kəsişmə

Əgər Q = 1 olarsa, yoxlanılmalı olan koordinatı bildirən əlavə bir sətir verilir:

X (sütun, 0-dan başlayaraq) və Y (sətir, 0-dan başlayaraq).

Çıxış verilənləri:

Q = 1 olduqda:

Əgər verilən koordinat lövhədən kənardadırsa, aşağıdakını çap edin:

Invalid coordinate

Əgər koordinat lövhənin daxilindədirsə:

Əvvəlcə koordinatın aid olduğu ərazinin sahibini çap edin – BLACK, WHITE və ya NONE sətirlərindən birini.

Daha sonra, eyni əraziyə daxil olan hər bir [X Y] koordinatını hər biri ayrı sətirdə olmaqla, əvvəlcə $X$-ə görə (artan sıra ilə), sonra isə $Y$-ə görə (artan sıra ilə) çeşidlənmiş formada çap edin.

(Əgər verilmiş koordinat boş kəsişmə deyilsə, yəni daşın özüdürsə, yalnız sahibi kimi NONE çap edilir və heç bir koordinat çap olunmur).

Q = 2 olduqda:

Bütün lövhəni analiz edin və hər bir sahibin ərazilərini aşağıdakı ardıcıllıqla çap edin:

BLACK:
<qara daşlara aid bütün koordinatların siyahısı, çeşidlənmiş>
WHITE:
<ağ daşlara aid bütün koordinatların siyahısı, çeşidlənmiş>
NONE:
<heç kimə aid olmayan bütün boş kəsişmələrin siyahısı, çeşidlənmiş>

Siyahılar koordinatları eyni X Y formatında, əvvəlcə X-ə, sonra isə Y-ə görə çeşidlənmiş şəkildə ehtiva etməlidir.

Qeydlər:

  • Ortoqonal qonşular ortaq bir tərəfi paylaşan xanalardır; diaqonal qonşular nəzərə alınmır.

  • Lövhənin ölçüsü kifayət qədər böyük (məsələn, bir neçə yüz sətir/sütun) ola bilər.

  • Girişdə verilən bütün indekslər 0-dan başlayır (əvvəlcə sütun, sonra sətir).

1Nümunə 1:
Giriş:
1 5 5 ..B.. .B.B. B.W.B .W.W. ..W.. 0 1
Çıxış:
BLACK 0 0 0 1 1 0
2Nümunə 2:
Giriş:
1 5 5 ..B.. .B.B. B.W.B .W.W. ..W.. 2 3
Çıxış:
WHITE 2 3
3Nümunə 3:
Giriş:
1 5 5 ..B.. .B.B. B.W.B .W.W. ..W.. 1 4
Çıxış:
NONE 0 3 0 4 1 4
4Nümunə 4:
Giriş:
2 1 3 .B.
Çıxış:
BLACK: 0 0 2 0 WHITE: NONE:
REDAKTOR
Giriş edin
Giriş:
1 5 5 ..B.. .B.B. B.W.B .W.W. ..W.. 0 1
Çıxış:
BLACK 0 0 0 1 1 0