canuc80k4927·28/50

Chọn Dự Án Trên Đồ Thị

Nộp bài trên LQDOJ

Bài 49 · Network Flow

Có một đồ thị vô hướng đơn. Chọn một số cạnh làm dự án; để chọn cạnh, phải chọn cả hai đầu của nó. Tổng giá trị bằng tổng trọng số các cạnh đã chọn trừ tổng chi phí của các đỉnh đã chọn. Có thể chọn tập rỗng. Hãy tìm giá trị lớn nhất.

Input

  • Dòng đầu chứa .
  • Dòng thứ hai chứa , là chi phí các đỉnh.
  • Mỗi trong dòng tiếp theo chứa , mô tả một cạnh vô hướng trọng số .

Output

  • In một số nguyên: giá trị lớn nhất của đồ thị con.

Constraints

  • .
  • .
  • .
  • .
  • Không có khuyên hoặc cạnh trùng.

Scoring

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

Example

Test 1

Input

2 1
3 4
1 2 10

Output

3

Giải thích: Chọn cạnh duy nhất thu và trả chi phí , còn ; chọn rỗng chỉ được .

Lời giải tóm tắt
  • Phân tích: Đây là bài maximum closure: chọn một cạnh bắt buộc chọn hai đỉnh đầu mút.
  • Thuật toán: Tạo node cho mỗi cạnh, nối nguồn tới node cạnh với capacity bằng lợi ích. Nối node cạnh tới hai đầu bằng INF. Nối node đỉnh tới đích bằng chi phí. Đáp án là tổng lợi ích cạnh trừ min cut.
  • Chứng minh: Một lát cắt hữu hạn không thể đặt node cạnh ở phía nguồn mà bỏ đầu mút sang phía đích vì cạnh INF. Do đó phía nguồn biểu diễn đúng một tập đóng; capacity lát cắt là lợi ích bị bỏ cộng chi phí đã chọn. Tối thiểu hóa nó tương đương tối đa hóa lợi nhuận.
  • Độ phức tạp: Một lần max flow trên O(n+m) đỉnh và O(n+m) cạnh.