Định hướng cạnh
Đề bài
Mô tả
Cho một đồ thị gồm đỉnh và cạnh. Mỗi cạnh có thể là cạnh có hướng hoặc cạnh vô hướng. Giữa một cặp đỉnh có thể có nhiều cạnh.
Cho trước một đỉnh . Bạn cần lập hai phương án định hướng:
- Định hướng mỗi cạnh vô hướng theo một trong hai chiều sao cho số đỉnh đến được từ là lớn nhất.
- Định hướng mỗi cạnh vô hướng theo một trong hai chiều sao cho số đỉnh đến được từ là nhỏ nhất.
Trong cả hai phương án, mọi cạnh vô hướng đều phải được định hướng. Một cạnh có thể được định hướng khác nhau ở hai phương án. Đỉnh luôn được tính là đến được từ chính nó.
Dữ liệu vào
- Dòng đầu chứa ba số nguyên , , — số đỉnh, số cạnh và đỉnh xuất phát.
- dòng tiếp theo, mỗi dòng chứa ba số nguyên , , . Nếu thì cạnh là cạnh có hướng đi từ đến . Nếu thì cạnh là cạnh vô hướng nối và .
Dữ liệu đảm bảo có ít nhất một cạnh vô hướng.
Dữ liệu ra
Hai dòng đầu mô tả phương án làm cực đại số đỉnh đến được, hai dòng sau mô tả phương án làm cực tiểu.
Mỗi phương án gồm:
- Một dòng chứa số đỉnh đến được từ theo phương án đó.
- Một dòng chứa ký tự '+' hoặc '-', với là số cạnh vô hướng của đồ thị ban đầu. Ký tự thứ là '+' nếu cạnh vô hướng thứ , giả sử là , được định hướng từ sang , và là '-' nếu định hướng ngược lại. Các cạnh vô hướng được đánh số theo đúng thứ tự xuất hiện trong dữ liệu vào.
Nếu có nhiều đáp án, in ra một đáp án bất kỳ.
Ràng buộc
- ,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 2 1 1 1 2 2 2 1 |
2 - 2 + |
Cạnh có hướng đã cho phép đi tới đỉnh , nên cả hai phương án đều đến được đỉnh. Cạnh vô hướng duy nhất là : định hướng '-' nghĩa là , '+' nghĩa là . |
| 6 6 3 2 2 6 1 4 5 2 3 4 1 4 1 1 3 1 2 2 3 |
6 ++- 2 +-+ |
Ba cạnh vô hướng lần lượt là , , . Phương án cực đại "++-" cho , , , từ đi được tới cả đỉnh. Phương án cực tiểu chỉ dùng cạnh có hướng , và mọi cạnh vô hướng đều được hướng vào nên chỉ đến được đỉnh. |
Bình luận