14009: Перетин браслетів - Bracelet Crossings - USACO21DecGolg


Відправити розв'язок

Бали: 100 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
Brain****, C, C++, Java, Pascal, Python, v8js

Бесі зробила \(N\) браслетів, послідовно пронумерованих \(1 \ldots N\). (\(1\le N\le 50\)). \(i\)-ий браслет розфарбований кольором \(i\) з множини з \(N\) різних кольорів. Бесі розклала їх на столі (який ми можемо розглядати як двовимірну площину) відповідно до таких обмежень:

  • Кожен браслет - один замкнутий багатокутний ланцюжок - серія вершин (точок), з'єднаних послідовно відрізками прямих, де перша та остання точки звільняються (детальніше див. багатокутний ланцюжок),
  • Браслет не самоперетинається (це відповідає "простому") багатокутному ланцюжку.
  • Жодні два браслети не перетинаються.

На жаль, Фермер Джон проїжджаючи на тракторі, штовхнув стіл і браслети впали зі столу і можливо розбилися (не обов'язково замкнуті та прості) багатокутні ланцюжки. Після цього Бесі хоче перевірити, чи виконуються тепер три зазначені вище умови. Однак було темно і вона не може бачити браслети зараз.

На щастя, у Бесі є ліхтарик. Вона обрала \(M\) (\(1\le M\le 50\)) вертикальних прямих \(x=1, x=2, \ldots, x=M\) і для кожної вертикальної прямої вона направила промінь вздовж неї від \(y=-\infty\) до \(y=\infty\), записуючи кольори всіх браслетів, які вона побачила в порядку їхньої появи. На щастя, промені ліхтарика не перетнули жодну вершину жодного багатокутного ланцюжка. Більш того, для кожного променя кожен колір з'явився рівно двічі.

Допоможіть Бесі, використовуючи цю інформацію, визначити чи можливо щоб браслети задовольняли всім трьом зазначеним вище умовам.

Формат вхідних даних

Кожен вхідний тест складається з \(T\) підтестів (\(1 \leq T \leq 50\)), кожен з яких потрібно вирішити правильно, щоб одержати повний бал за тест. Тести розділені порожніми рядками.

Перший рядок введення містить \(T\). Далі йдуть підтести.

Перший рядок кожного підтесту містить два цілих числа \(N\) \(M\). Далі кожен підтест містить \(M\) додаткових рядків. Для кожного \(i\) від \(1\) до \(M\), \(i\)-ий додатковий рядок містить ціле число \(k_i\) (\(0\le k_i\le 2N\), \(k_i парне\), за яким слідують \(k_i\) цілих чисел \(c_{i1}, c_{i2},\ldots, c_{ik_i}\) (\(c_{ij}\in [1,N]\), кожне \(c_{ij}\) з'явиться 0 або 2 рази). Це означає що коли Бесі світить ліхтариком від \((i,-\infty)\) до \((i,\infty)\), вона побачить кольори \(c_{i1}, c_{i2},\ldots, c_{ik_i}\) у цьому порядку.

Формат вихідних даних

Для кожного підтесту виведіть YES якщо можливо, щоб усі три умови виконувались, або NO інакше.

Приклад вхідних даних-1

5

1 2
2 1 1
2 1 1

1 3
2 1 1
0
2 1 1

2 1
4 1 2 1 2

4 2
6 1 2 2 3 3 1
6 1 2 4 4 2 1

2 2
4 1 1 2 2
4 2 2 1 1

Приклад вихідних даних-1

YES
NO
NO
YES
NO

Пояснення до прикладу-1

Приклад відповідної конфігурації браслетів для першого підтесту.

Підходяща конфігурація для 4-го підтесту.:

Оцінювання

  • У тесті 2 \(N = 1\).
  • Тести 3-5 \(N=2\).
  • У тестах 6-8 \(M=1\).
  • У тестах 9-14 \(M=2\).
  • У тестах 15-20 немає додаткових обмежень.

Коментарі

Ще немає коментарів.