canuc80k4905·6/50

Chốt Chặn Tối Thiểu

Nộp bài trên LQDOJ

Bài 49 · Network Flow

Một thành phố có giao lộ và con phố hai chiều. Trung tâm điều phối ở giao lộ , còn điểm cần cô lập ở giao lộ .

Hãy đóng ít phố nhất sao cho sau khi đóng, không còn bất kỳ đường đi nào giữa hai giao lộ trên. Bạn phải xuất cả số lượng nhỏ nhất và một tập phố đạt được số lượng đó. Hai đầu mút của một phố có thể được in theo bất kỳ thứ tự nào; mỗi phố chỉ được liệt kê một lần.

Input

  • Dòng đầu chứa hai số nguyên .
  • Mỗi trong dòng tiếp theo chứa hai số nguyên , cho biết có một phố hai chiều nối và . Mỗi cặp giao lộ xuất hiện nhiều nhất một lần.

Output

  • Dòng đầu in số nguyên : số phố nhỏ nhất cần đóng.
  • Tiếp theo in đúng dòng, mỗi dòng chứa hai đầu mút của một phố cần đóng. Có thể in bất kỳ phương án tối ưu nào.

Constraints

  • .
  • .
  • .
  • Mỗi cặp giao lộ có nhiều nhất một phố.

Scoring

  • Subtask ( số điểm): và .
  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

6 8
1 2
1 3
2 4
3 4
2 5
3 5
4 6
5 6

Output

2
1 2
1 3

Giải thích: Đóng hai phố rời giao lộ sẽ cô lập khỏi . Vẫn có hai đường không dùng chung phố từ tới , nên không thể chỉ đóng một phố.

Lời giải tóm tắt
  • Phân tích: Mỗi phố có thể bị dùng theo hai hướng và có chi phí đóng bằng 1. Vì vậy ta thay một phố bằng hai cung ngược chiều cùng capacity 1; số phố nhỏ nhất ngăn nguồn với đích chính là capacity của minimum cut.
  • Thuật toán: Chạy Dinic từ 1 đến n. Sau khi luồng cực đại dừng, BFS trong mạng dư từ nguồn để lấy tập R các đỉnh còn tới được. Duyệt đúng danh sách phố gốc và in mỗi phố có một đầu thuộc R, đầu kia nằm ngoài R.
  • Chứng minh: Khi không còn đường tăng, n không thuộc R. Mọi đường từ 1 sang n phải băng qua một phố giữa R và phần còn lại, nên đóng các phố được in là đủ. Các cung đi ra khỏi R đều bão hòa và tổng capacity của cut bằng maximum flow; theo định lý max-flow min-cut, không có phương án ít phố hơn.
  • Độ phức tạp: Dinic có cận tổng quát O(n^2m); bước tìm phía nguồn và khôi phục cut tốn O(n+m). Bộ nhớ O(n+m).