Gánh Xiếc
Nộp bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
4.0s
Python 3
5.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Go, Java, Kotlin, Pascal, Python, Scratch
Nông dân John đang chuẩn bị biểu diễn gánh xiếc với con bò, được đánh số từ đến . Sân khấu gánh xiếc được biểu diễn bởi một cây gồm đỉnh được đánh số từ đến .
Một trạng thái khởi đầu cho con bò () là cách gán con bò phân biệt (được đánh số từ đến ) vào đỉnh phân biệt của cây. Một bước di chuyển là: chọn một con bò và di chuyển nó đến một đỉnh kề chưa bị chiếm. Hai trạng thái được gọi là tương đương nếu có thể đến được từ trạng thái này sang trạng thái kia bằng một số hữu hạn bước di chuyển.
Với mỗi từ đến , hãy đếm số lớp tương đương của các trạng thái khởi đầu cho con bò. In kết quả modulo .
Dữ liệu vào
- Dòng : Số nguyên — số đỉnh của cây.
- dòng tiếp theo: Mỗi dòng gồm hai số nguyên và () mô tả một cạnh của cây.
Dữ liệu ra
In dòng. Dòng là số lớp tương đương cho con bò, modulo .
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 1 2 2 3 3 4 3 5 |
1 1 3 24 120 |
Cây có đỉnh: đường đi -- và các cạnh -, -. Với : 1 lớp. Với : 3 lớp tương đương. Với : lớp (mỗi hoán vị là một lớp riêng). |
| 8 1 3 2 3 3 4 4 5 5 6 6 7 6 8 |
1 1 1 6 30 180 5040 40320 |
Cây có đỉnh: đỉnh nối với , , ; đỉnh nối với , , . Với : chỉ có lớp tương đương vì các con bò có thể sắp xếp tự do. Với : lớp. |
Ghi chú
- Hai con bò được coi là phân biệt (có đánh số), nên việc hoán đổi vị trí của hai con bò tạo ra trạng thái khác.
- Khi : tất cả trạng thái đều thuộc các lớp tương đương khác nhau (mỗi trạng thái là một lớp riêng).
- Khi nhỏ (nhiều đỉnh trống), các con bò có thể di chuyển tự do và tất cả trạng thái về cơ bản là tương đương.
Bình luận