QOJ.ac

QOJ

시간 제한: 1 s 메모리 제한: 256 MB 총점: 100

#22903. Nuolet

통계

Tämän tehtävän piti olla Juanin historian oppitunti Etelä-Afrikassa järjestetystä vuoden 1997 IOI:sta. Muu komitea kuitenkin sensuroi oppitunnin, joten olet saanut seuraavan tehtävänannon:

Abraham on rohkea tutkimusmatkailija, joka menee sinne, missä yksikään ohjelmoija ei ole ennen käynyt. Seuraavalla tutkimusretkellään hän aikoo tutkia hyvin erikoista labyrinttia. Hän tietää, että labyrintti on $n \times n$ ruudukko, jonka jokaisessa ruudussa on nuoli. Kukin nuoli osoittaa yhteen neljästä mahdollisesta suunnasta: ylös, alas, vasemmalle tai oikealle. Jos Abraham astuu ruutuun, hänen on pakko seurata nuolia siitä ruudusta lähtien. Jokainen nuoli siirtää Abrahamia yhden ruudun osoittamaansa suuntaan; jos hän saavuttaa labyrintista ulos osoittavan nuolen, hän pääsee pakoon.

Abraham ei tiedä labyrintin nuolten suuntia, mutta hänellä on muita tietoja. Hänen labyrinttikartassaan jotkin ruudut on väritetty mustiksi ja toiset valkoisiksi. Hän uskoo, ettei hän koskaan pääse pois labyrintista aloittaessaan mistä tahansa mustasta ruudusta, kun taas mistä tahansa valkoisesta ruudusta aloittaessaan hän pääsee lopulta pakoon.

Abrahamin oletus voi olla väärä: on olemassa mustien ja valkoisten ruutujen asetelmia, joissa annetut ehdot eivät voi toteutua kaikille ruuduille samanaikaisesti riippumatta nuolten suunnista. Seuraava kuva näyttää esimerkin.

problem_22903_fab2d834e51803a2e48c9a7b7b8a4697.png

Kartta esittää labyrinttia, jonka valkoiset ruudut voivat täyttää Abrahamin oletuksen. Jos hän aloittaa kummasta tahansa niistä, kuvan nuolet johtavat hänet ulos labyrintista, mutta hänen on mahdotonta jäädä loukkuun mustasta ruudusta aloittaessaan riippumatta siitä, miten suuntaamme nuolet, joita kuvassa ei näytetä.

Abraham pyytää sinua auttamaan selvittämään, onko hänen karttansa ruutujen annetulle väritykselle olemassa nuolten asetelma, joka vastaa hänen uskomustaan ruudukon jokaisen ruudun osalta, sekä mustien että valkoisten.

Syöte

  • Ensimmäisellä rivillä on positiivinen kokonaisluku $n$.
  • Kullakin seuraavista $n$ rivistä on $n$ merkkiä, joista jokainen on joko 0 tai 1. 0 tarkoittaa mustaa ruutua ja 1 valkoista ruutua. Nämä $n$ riviä kuvaavat ruudukon.

Tuloste

Tulosta SI, jos nuolet voidaan suunnata niin, ettei Abraham koskaan pääse pakoon mustasta ruudusta aloittaessaan ja että hän pääsee lopulta pakoon valkoisesta ruudusta aloittaessaan.

Tulosta NO, jos tämä on mahdotonta.

Esimerkit

Syöte 1

3
001
001
111

Tuloste 1

SI

Syöte 2

2
01
10

Tuloste 2

NO

Selitys

Ensimmäinen esimerkki vastaa seuraavaa väritystä (vasemmalla) sekä yhtä mahdollista nuolten suuntien asetelmaa:

problem_22903_1a7dc6fe29d31abba4ab21f7181cda94.png

Toinen esimerkki mainittiin tehtävän tarinassa tapauksena, jossa vaadittuja ehtoja ei voida täyttää kaikille ruuduille samanaikaisesti.

Rajat

  • $2 \le n \le 1000$.

Osatehtävät

  • Osatehtävä 1 (10 pistettä): $n=2$.
  • Osatehtävä 2 (25 pistettä): Mustat ruudut muodostavat varmasti yhtenäisen alueen, ja ainakin kaksi labyrintin kulmaa on mustia.
  • Osatehtävä 3 (25 pistettä): Valkoiset ruudut muodostavat varmasti yhtenäisen alueen, ja mustia ruutuja on vähemmän kuin $4n-4$.
  • Osatehtävä 4 (40 pistettä): Ei lisärajoituksia.

Huomautus

Ruutujoukko muodostaa yhtenäisen alueen, jos sen jokaisen ruutuparin välillä on polku, joka kulkee vain joukon ruutujen kautta ja jossa siirrytään yhteisen sivun jakavien ruutujen välillä. Erityisesti mustat ruudut muodostavat yhtenäisen alueen, jos jokaisen mustan ruutuparin välillä on vain mustista ruuduista koostuva polku. Vastaavasti valkoiset ruudut muodostavat yhtenäisen alueen, jos jokaisen valkoisen ruutuparin välillä on vain valkoisista ruuduista koostuva polku.

Ensimmäisessä esimerkissä sekä valkoiset ruudut että mustat ruudut muodostavat yhtenäisen alueen.

Toisessa esimerkissä mustat ruudut eivät muodosta yhtenäistä aluetta, koska jokainen niiden välinen polku kulkee myös valkoisen ruudun kautta.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.