13010. Tree and Constraints
Відправити розв'язок
Бали:
100
Time limit:
2.0s
Memory limit:
250M
Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python
У нас є дерево з \(N\) вершинами, пронумерованими від 1 до \(N\). \(i\)-те ребро в цьому дереві з’єднує вершину \(a_i\) та вершину \(b_i\) .
Розфарбуйте кожен із цих ребер білим або чорним. Існує \(2^{N−1}\) таких способів розфарбовування ребер. Скільки з них задовольняють усі наведені нижче \(M\) обмеження?
- \(i\)-те (\(1≤i≤M\)) обмеження представлено двома цілими числами \(u_i\) та \(v_i\) , які означають, що шлях, що з’єднує вершину \(u_i\) та вершину \(v_i\) , повинен містити принаймні одне ребро, пофарбоване чорним кольором.
Обмеження
- \(2≤N≤50\)
- \(1≤a_i ,b_i ≤N\)
- Граф, поданий у вхідних даних, є деревом.
- \(1≤M≤min(20, N(N−1)/2 )\)
- \(1≤u_i <v_i ≤N\)
- Якщо \(i \neq j\), то \(u_i \neq u_j\) або \(v_i \neq v_j\)
- Усі значення у вхідних даних є цілими числами.
Формат вхідних даних
Перший рядок містить ціле число \(N\).
Наступні \(N-1\) рядки містять цілі числа \(a_i, b_i\)
Далі рядок містить ціле число \(M\).
Наступні \(M\) рядків містять цілі числа \(u_i, v_i\)
Формат вихідних даних
Виведіть кількість способів фарбування ребер, які задовольняють усі \(𝑀\) умов.
Приклад вхідних даних
3
1 2
2 3
1
1 3
Приклад вихідних даних
3
Всі \(𝑀\) обмежень буде виконано, якщо ребра 1 і 2 відповідно пофарбовані (білий, чорний), (чорний, білий) або (чорний, чорний), тому відповідь така 3 .
Приклад вхідних даних
2
1 2
1
1 2
Приклад вихідних даних
1
Приклад вхідних даних
5
1 2
3 2
3 4
5 3
3
1 3
2 4
2 5
Приклад вихідних даних
9
Приклад вхідних даних
8
1 2
2 3
4 3
2 5
6 3
6 7
8 6
5
2 7
3 5
1 6
2 8
7 8
Приклад вихідних даних
62
Коментарі