Надіслати розв'язок

Бали: 25,00 (partial)
Time limit: 2.0s
Python 3 4.0s
Memory limit: 250M
Python 3 500M

Author:
Problem type
Allowed languages
Assembly, Awk, Brain****, C, C++, Java, mono C#, Pascal, Perl, Python, Sed, Text, vb

Маленька Оксі отримала у подарунок деревʼяну рамку у формі правильного багатокутника. Оскільки багатокутник має ~n~ вершин, він містить ~(n \times (n-3))/2~ деревʼяних паличок, які відповідають кожній можливій діагоналі. Вершини багатокутника позначені цілими числами від 1 до ~n~ проти годинникової стрілки. Спочатку Оксі розташувала ~n-3~ палички всередині рамки таким чином, що кожна паличка торкається двох несусідніх вершин рамки, і ніякі дві палички не перетинаються. Іншими словами, вона зробила тріангуляцію. Оскільки це було недостатньо цікаво для неї, вона вирішила пограти з цією конфігурацією, застосувавши певну операцію, яка складається з двох кроків:

  • Зніміть паличку.
  • Додаємо нову паличку таким чином, щоб отримати нову тріангуляцію.

Ми характеризуємо операцію впорядкованою парою невпорядкованих пар ~((a, b), (c, d))~, що означає, що маленька Оксі видалила паличку, яка торкається вершин ~a~ і ~b~, і додала паличку, що торкається вершин ~c~ і ~d~.

Оксі любить віяла, тому, виконуючи ці операції, вона іноді запитує себе: «Скільки операцій потрібно, щоб перетворити цю тріангуляцію на «віялову» тріангуляцію у вершині ~x~, і скількома способами це можливо зробити?».

Оскільки маленька Оксі зайнята операціями та розважається, то вона просить вашої допомоги!

«Віялова» тріангуляція у вершині ~x~ - це тріангуляція, де всі діагоналі мають спільну кінцеву точку, а саме вершину ~х~.

Нехай кількість необхідних операцій дорівнює ~m~. Нехай ~f_1, f2, . . . , f_m~ - це послідовність операцій, які при застосуванні в заданому порядку досягають бажаної тріангуляції, таким чином представляючи один із шляхів досягнення цього. Нехай ~s_1, s_2, . . . , s_m~ є іншою такою послідовністю. Дві послідовності є різними, якщо існує такий індекс ~i~, що ~f_i \neq s_i~.

Оскільки кількість таких послідовностей може бути дуже багато, то маленьку Оксі цікавить лише її залишок від ділення за модулем ~10^9 + 7~.

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

У першому рядку цілі числа ~n~ і ~q~ (~4 ≤ n ≤ 2·10^5~,~1 ≤ q ≤ 2·10^5~), кількість вершин і кількість подій

У кожному з наступних ~n - 3~ рядків записані цілі числа ~x_i, y_i~ (~1 ≤ x_i, y_i ≤ n~) — мітки вершин, яких торкається ~i~-та паличка.

У кожному з наступних ~q~ рядків є ціле число ~t_i~ (~1 ≤ t_i ≤ 2~), яке представляє тип події. Якщо ~t_i = 1~, за ним йдуть 4 цілі числа ~a_i, b_i, c_i, d_i~ (~1 ≤ a_i, b_i, c_i, d_i ≤ n~), які означають операцію ~((a_i, b_i), (c_i, d_i)~, яка виконується в цей момент. Гарантовано, що дана операція може бути реалізована. Якщо ~t_i = 2~, за ним йде ціле число ~x_i~ (~1 ≤ x_i ≤ n~), що означає, що маленьку Оксі цікавлять дані для «віялової» тріангуляції у вершині ~x_i~ по відношенню до поточної тріангуляції.

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

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

Оцінювання

  • тести 1-3 - 0 балів
  • тести 4-13 (~n≤9,q≤1000~) - 10 балів
  • тести 14-21 (~x_i =1,y_i =i+2~ для ~i=1,...,n-3~ і подій типу 1 немає - 15 балів
  • тести 22-29 (~q=1~) - 25 балів
  • тести 30-41 (~n,q ≤ 1000~) - 10 балів
  • тести 42-55 (Жодних додаткових обмежень) - 40 балів

Пояснення

До першого прикладу: Початок тріангуляції вже є «віяльною» тріангуляцією у вершині 1, тому маленька Оксі не повинна виконувати жодних операцій, щоб можна зробити одним способом. Після виконання даної операції тепер є лише один спосіб повернути її до попереднього стану, а саме застосувати операцію ~((2, 4), (1, 3))~.

До другого прикладу: Єдина послідовність операцій для першого запиту: ~((3, 5), (1, 4))~.

Єдина послідовність операцій для другого запиту: ~((1, 3), (2, 5))~, ~((3, 5), (2, 4))~.

Єдина послідовність операцій для третього запиту: ~((3, 5), (2, 5))~.

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

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

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

0 1
1 1

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

5 4
1 3
3 5
2 1
2 2
1 1 3 2 5
2 2

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

1 1
2 1
1 1

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

9 3
1 5
1 7
2 4
2 5
5 7
7 9
2 1
1 2 5 1 4
2 1

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

4 12
3 6

Коментарі

Please read the guidelines before commenting.



  • 0
    zvit  commented on Березень 12, 2024, 9:35 до полудня

    5 балів нараховується за проходження тестів з умови


  • 0
    Olympian07  commented on Березень 12, 2024, 8:15 до полудня

    Чому коли потрібно переставити 2 палички відповідь 2 а не 1?


    • 0
      zvit  commented on Березень 12, 2024, 8:58 до полудня відректований

      На запитання "чому" зараз не відповідають

      ps Надалі треба ставити запитання більш конкретно - який приклад, яка фігура і т.п