QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 256 MB Total points: 100

#406. Smörgås

Statistics

JOI deltar i en social sammankomst under IOI. På sammankomsten är smörgåsar utplacerade i ett rutnät med $R$ rader och $C$ kolumner. Varje smörgås har formen av en rätvinklig likbent triangel där två sidor har samma längd som sidan i en rutnätscell, och varje cell innehåller två smörgåsar placerade så att deras hypotenuser vidrör varandra. Figuren nedan visar ett exempel på hur smörgåsarna kan vara placerade.

problem_406_3458388a51fae6a8179754f56fc767fa.png

Figur 1. Exempel på placering av smörgåsar

En smörgås kan inte tas om den uppfyller båda följande villkor: Dess hypotenusa vidrör en annan smörgås som ännu inte har tagits. Minst en av dess två andra sidor utöver hypotenusan vidrör en annan smörgås som ännu inte har tagits.

Andra smörgåsar än dessa kan tas.

Tillståndet där inga smörgåsar har tagits är starttillståndet. För att ta en viss smörgås från starttillståndet kan det vara nödvändigt att först ta andra smörgåsar. Beroende på hur smörgåsarna är placerade kan det hända att vissa smörgåsar inte går att ta överhuvudtaget.

JOI vill äta båda smörgåsarna som ligger i samma cell. Han har ännu inte bestämt sig för vilken cells smörgåsar han ska äta.

Han är intresserad av det minsta antalet smörgåsar som måste tas för att få båda smörgåsarna i en viss cell från starttillståndet.

Uppgift

Givet placeringen av smörgåsarna, avgör för varje cell om det är möjligt att ta båda smörgåsarna i den cellen genom att ta några smörgåsar från starttillståndet. Om det är möjligt, bestäm det minsta antalet smörgåsar som behöver tas. Observera att antalet smörgåsar ska inkludera de två målsmörgåsarna själva.

Indata

Läs följande data från standard inmatning: Den första raden innehåller två mellanslagsseparerade heltal $R$ och $C$. Dessa anger att smörgåsarna är placerade i ett rutnät med $R$ rader och $C$ kolumner. Den $i$-te raden ($1 \le i \le R$) av de följande $R$ raderna innehåller en sträng av längd $C$. Varje tecken är antingen 'N' eller 'Z'. Det $j$-te tecknet ($1 \le j \le C$) i denna sträng anger placeringen av smörgåsarna i cellen på den $i$-te raden uppifrån och den $j$-te kolumnen från vänster. 'N' och 'Z' representerar följande placeringar.

problem_406_6215a61d400ae88cfe74a0a9599ce3dd.png

Figur 2. Placering av smörgåsar i varje cell

Utdata

Skriv ut $R$ rader till standard utmatning. Den $i$-te raden ($1 \le i \le R$) ska innehålla $C$ mellanslagsseparerade heltal. Det $j$-te heltalet ($1 \le j \le C$) ska vara det minsta antalet smörgåsar som behöver tas för att få båda smörgåsarna i cellen på den $i$-te raden uppifrån och den $j$-te kolumnen från vänster. Om det inte är möjligt att ta dem, skriv ut -1.

Begränsningar

All indata uppfyller följande villkor: $1 \le R \le 400$ $1 \le C \le 400$

Deluppgifter

Deluppgift 1 [35 poäng]

  • $R \le 50$
  • $C \le 50$

Deluppgift 2 [65 poäng]

  • Inga ytterligare begränsningar.

Exempel

Indata 1

2 3
NZN
ZZN

Utdata 1

10 8 2
8 6 4

Förklaring 1

Placeringen av smörgåsarna i Exempel 1 motsvarar Figur 1 i problembeskrivningen. För att till exempel ta de två smörgåsarna i cellen på 2:a raden uppifrån och 2:a kolumnen från vänster kan man ta smörgåsarna i följande ordning: Ta den övre högra smörgåsen i cellen på 1:a raden, 3:e kolumnen. Ta den nedre vänstra smörgåsen i cellen på 1:a raden, 3:e kolumnen. Ta den övre högra smörgåsen i cellen på 2:a raden, 3:e kolumnen. Ta den nedre vänstra smörgåsen i cellen på 2:a raden, 3:e kolumnen. Ta den nedre högra smörgåsen i cellen på 2:a raden, 2:a kolumnen. Ta den övre vänstra smörgåsen i cellen på 2:a raden, 2:a kolumnen.

Totalt tas 6 smörgåsar, och eftersom detta är det minsta möjliga antalet skrivs 6 ut.

Indata 2

2 2
NZ
ZN

Utdata 2

-1 -1
-1 -1

Förklaring 2

I detta fall kan ingen av smörgåsarna tas.

Indata 3

5 5
NZZZN
NNNZN
NNZNN
NZNNN
NZZZN

Utdata 3

10 12 14 16 2
8 -1 -1 -1 4
6 -1 -1 -1 6
4 -1 -1 -1 8
2 16 14 12 10

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.