Đối với một DAG nhất định (biểu đồ chu kỳ có hướng), mỗi loại cấu trúc liên kết của nó là một hoán vị của tất cả các đỉnh, trong đó đối với mọi cạnh (u, v) trong DAG, u xuất hiện trước v trong hoán vị.
Nhiệm vụ của bạn là tính tổng số loại cấu trúc liên kết của một DAG nhất định.
Quy tắc
- Bạn có thể sử dụng bất kỳ định dạng nào để biểu thị biểu đồ, như ma trận kề, danh sách kề hoặc danh sách cạnh, miễn là bạn không thực hiện các tính toán hữu ích trong mã hóa của mình. Bạn cũng có thể có những thứ như số đỉnh hoặc danh sách đỉnh trong đầu vào, nếu những thứ đó hữu ích.
- Bạn có thể giả sử đồ thị trong đầu vào luôn là DAG (không có bất kỳ chu kỳ nào).
- Chương trình của bạn nên hoạt động trên lý thuyết cho bất kỳ đầu vào. Nhưng nó có thể thất bại nếu nó vượt quá kiểu số nguyên cơ bản trong ngôn ngữ của bạn.
- Tên của các đỉnh có thể là bất kỳ giá trị liên tiếp trong bất kỳ loại nào. Ví dụ: các số bắt đầu từ 0 hoặc 1. (Và chỉ khi bạn không lưu trữ mã trong số này, tất nhiên.)
- Đây là môn đánh gôn. Mã ngắn nhất sẽ thắng.
Thí dụ
Đây là cùng một đầu vào trong các định dạng khác nhau. Chương trình của bạn không phải chấp nhận tất cả chúng. Các đỉnh luôn là số nguyên bắt đầu từ 0.
Adjacency list:
[ [1 2 3 5] [2 4] [] [2] [] [3] ]
Adjacency matrix:
[ [0 1 1 1 0 1] [0 0 1 0 1 0] [0 0 0 0 0 0] [0 0 1 0 0 0] [0 0 0 0 0 0] [0 0 0 1 0 0] ]
Edge list:
6 [ [0 1] [0 2] [0 3] [0 5] [1 2] [1 4] [3 2] [5 3] ]
Đó là biểu đồ hiển thị trong hình ảnh này:
Đầu ra phải là:
9
Các loại cấu trúc liên kết là:
[0 1 4 5 3 2]
[0 1 5 4 3 2]
[0 1 5 3 4 2]
[0 1 5 3 2 4]
[0 5 1 4 3 2]
[0 5 1 3 4 2]
[0 5 1 3 2 4]
[0 5 3 1 4 2]
[0 5 3 1 2 4]