Організація компанії#5419

Організація компанії

30 секунд
128 мегабайтів
Складна

Ви започаткували компанію кілька років тому, і, на щастя, вона стала дуже успішною. Зі зростанням компанії ви помітили необхідність більш організовано керувати працівниками й вирішили створити кілька груп та призначати до них працівників.

Тепер ви плануєте створити груп, кожна з яких відповідає певному проєкту. Іноді існують обмеження щодо складу цих груп. Наприклад: - Одна група є підмножиною іншої, оскільки складається зі старших учасників - Дві групи мають мати однаковий склад, оскільки їхні проєкти тісно пов’язані - Склади двох груп не повинні повністю збігатися, щоб уникнути корупції - Дві групи не можуть мати спільних співробітників із міркувань безпеки - Між двома групами повинен бути хоча б один спільний учасник для полегшення співпраці

Позначимо X_i (i = 1, \ldots, n) — множину працівників, призначених у -у групу. Можливі пʼять типів обмежень:

1. X_i \subseteq X_j 2. X_i = X_j 3. X_i \neq X_j 4. X_i \cap X_j = \varnothing 5. X_i \cap X_j \neq \varnothing

Оскільки обмеження у списку можуть бути взаємно суперечливими, задовольнити всі одночасно не завжди можливо. Обмеження впорядковані за пріоритетами. Ваше завдання — знайти найбільший префікс, який можна виконати одночасно, починаючи з найпріоритетнішого.

Вам не потрібно враховувати здібності співробітників — ви можете призначати будь-кого до будь-якої групи або створювати групи без учасників. Можна брати на роботу або звільняти необмежену кількість людей для виконання більшої кількості обмежень.

Наприклад, для трьох груп задано пʼять обмежень у порядку пріоритету (як у першому прикладі у вхідних даних):

- X_2 \subseteq X_1 - X_3 \subseteq X_2 - X_1 \subseteq X_3 - X_1 \neq X_3 - X_3 \subseteq X_1

Наділивши X_1, X_2 та X_3 однаковим набором людей, можна виконати перші три обмеження. Проте перші чотири одночасно виконати неможливо. Хоча можна виконати перші три та пʼяте одночасно, відповіддю буде число три.

Вхідні дані

Вхід складається з кількох наборів даних. У першому рядку кожного набору міститься два цілі числа (2 \le n \le 100) і (1 \le m \le 10000) — кількість груп і кількість обмежень. Далі йдуть рядків із описом обмежень. Кожне описується трьома числами: (1 \le s \le 5), (1 \le i \le n), (1 \le j \le n, j \neq i), де — тип обмеження для групи й (як описано вище). Обмеження наведені в порядку спадання пріоритету.

Вхід закінчується рядком із двох нулів.

Вихідні дані

Для кожного набору даних у окремому рядку виведіть максимальну кількість найважливіших обмежень, які можливо виконати одночасно.

Приклади

Приклад 1

Loading
Loading