QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 2048 MB Total points: 100

#8679. Przechylane płytki

Statistics

Na strychu, w pudełku ze starymi zabawkami, znalazłeś dziwną łamigłówkę. Ma ona postać prostokątnej planszy złożonej z $h \times w$ kwadratowych pól. Na niektórych polach leżą kolorowe płytki, jak pokazano na rysunku F.1.

problem_8679_141bfaa0ba0c1196198d6deee1100655.png

Rysunek F.1: Kolorowe płytki odpowiadają początkowemu układowi z przykładowego wejścia 1.

Nie znasz jeszcze dokładnego celu tej łamigłówki, ale zacząłeś badać sposoby przestawiania płytek. Ich układ można zmieniać, przechylając planszę w jednym z czterech głównych kierunków: w lewo, w prawo, do siebie lub od siebie. Przechylenie sprawia, że wszystkie płytki przesuwają się w danym kierunku, aż zatrzyma je krawędź lub inna płytka. Mając układ początkowy i końcowy, ustal, czy istnieje ciąg przechyleń przekształcający pierwszy w drugi. Rysunek F.2 przedstawia przechylanie łamigłówki z przykładowego wejścia 1.

problem_8679_eb20e1509cd290b03249b30fb584f1df.png

Rysunek F.2: Rozwiązanie przykładowego wejścia 1.

Wejście

Pierwszy wiersz wejścia zawiera dwie liczby całkowite $h$ i $w$ ($1 \le h,w \le 500$), oznaczające wysokość i szerokość planszy. Następuje $h$ wierszy opisujących układ początkowy od górnego do dolnego wiersza. Każdy zawiera napis długości $w$, opisujący pola od lewej do prawej. Puste pole oznacza kropka (.). Jeśli na polu leży płytka, jej kolor podaje mała litera (a-z). Różne litery oznaczają różne kolory, a płytek tego samego koloru nie można rozróżnić.

Po układzie początkowym jest jeden pusty wiersz, a następnie opis układu końcowego składający się z $h$ wierszy w takim samym formacie.

Wyjście

Wypisz yes, jeśli istnieje ciąg przechyleń przekształcający układ początkowy w końcowy, a w przeciwnym razie no.

Przykład

Wejście 1

4 4
.r..
rgyb
.b..
.yr.

yrbr
..yr
...g
...b

Wyjście 1

yes

Wejście 2

1 7
....x..

..x....

Wyjście 2

no

Wejście 3

4 3
yr.
..b
ry.
b..

...
..b
.ry
byb

Wyjście 3

no

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.