QOJ.ac

QOJ

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

#406. Panini

Statistics

JOI sta partecipando a un incontro sociale delle IOI. All'incontro, dei panini sono disposti lungo una griglia di $R$ righe e $C$ colonne. Ogni panino ha la forma di un triangolo rettangolo isoscele con i due cateti di lunghezza uguale al lato di una cella della griglia, e ogni cella contiene due panini posizionati in modo che le loro ipotenuse si tocchino. La figura sottostante mostra un esempio della disposizione dei panini.

problem_406_3458388a51fae6a8179754f56fc767fa.png

Figura 1. Esempio di disposizione dei panini

Un panino non può essere preso se soddisfa entrambe le seguenti condizioni: La sua ipotenusa tocca un altro panino che non è stato ancora preso. Almeno uno dei suoi due lati diversi dall'ipotenusa tocca un altro panino che non è stato ancora preso.

I panini diversi da questi possono essere presi.

Lo stato in cui nessun panino è stato preso è lo stato iniziale. Per prendere un determinato panino a partire dallo stato iniziale, potrebbe essere necessario prendere prima altri panini. A seconda della disposizione dei panini, alcuni panini potrebbero non poter essere presi affatto.

JOI vuole mangiare entrambi i panini posizionati nella stessa cella. Non ha ancora deciso i panini di quale cella mangiare.

È interessato al numero minimo di panini che devono essere presi per ottenere entrambi i panini di una determinata cella a partire dallo stato iniziale.

Compito

Data la disposizione dei panini, per ciascuna cella determina se è possibile prendere entrambi i panini di quella cella prendendo alcuni panini a partire dallo stato iniziale. Se è possibile, trova il numero minimo di panini che devono essere presi. Si noti che il numero di panini deve includere anche i due panini obiettivo stessi.

Dati in ingresso

Leggi i seguenti dati da standard input: La prima riga contiene due interi $R$ e $C$ separati da uno spazio. Questi indicano che i panini sono disposti lungo una griglia di $R$ righe e $C$ colonne. La $i$-esima riga ($1 \le i \le R$) delle successive $R$ righe contiene una stringa di lunghezza $C$. Ogni carattere è 'N' oppure 'Z'. Il $j$-esimo carattere ($1 \le j \le C$) di questa stringa rappresenta la disposizione dei panini nella cella alla $i$-esima riga dall'alto e $j$-esima colonna da sinistra. 'N' e 'Z' rappresentano rispettivamente le seguenti disposizioni.

problem_406_6215a61d400ae88cfe74a0a9599ce3dd.png

Figura 2. Disposizione dei panini in ciascuna cella

Dati in uscita

Stampa $R$ righe su standard output. La $i$-esima riga ($1 \le i \le R$) deve contenere $C$ interi separati da spazi. Il $j$-esimo intero ($1 \le j \le C$) deve essere il numero minimo di panini che devono essere presi per ottenere entrambi i panini nella cella alla $i$-esima riga dall'alto e $j$-esima colonna da sinistra. Se non è possibile prenderli, stampa -1.

Vincoli

Tutti i dati di input soddisfano le seguenti condizioni: $1 \le R \le 400$ $1 \le C \le 400$

Sottoproblemi

Sottoproblema 1 [35 punti]

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

Sottoproblema 2 [65 punti]

  • Nessun vincolo aggiuntivo.

Esempi

Input 1

2 3
NZN
ZZN

Output 1

10 8 2
8 6 4

Nota 1

La disposizione dei panini nell'Esempio 1 corrisponde alla Figura 1 nella descrizione del problema. Ad esempio, per prendere i due panini nella cella alla 2ª riga dall'alto e 2ª colonna da sinistra, si possono prendere i panini nel seguente ordine: Prendere il panino in alto a destra della cella alla 1ª riga, 3ª colonna. Prendere il panino in basso a sinistra della cella alla 1ª riga, 3ª colonna. Prendere il panino in alto a destra della cella alla 2ª riga, 3ª colonna. Prendere il panino in basso a sinistra della cella alla 2ª riga, 3ª colonna. Prendere il panino in basso a destra della cella alla 2ª riga, 2ª colonna. Prendere il panino in alto a sinistra della cella alla 2ª riga, 2ª colonna.

Vengono presi in totale 6 panini e, poiché questo è il minimo, viene stampato 6.

Input 2

2 2
NZ
ZN

Output 2

-1 -1
-1 -1

Nota 2

In questo caso, nessuno dei panini può essere preso.

Input 3

5 5
NZZZN
NNNZN
NNZNN
NZNNN
NZZZN

Output 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.