02/10/2018, 14:18

ASSIGN1 spoj – Phân công hoàn thành sớm nhất

Nguồn đề bài: http://vn.spoj.com/problems/ASSIGN1/ 1. Đề bài ASSIGN1 spoj Có n người, n việc (1 < n ≤ 200). Người thứ i thực hiện công viêc j mất C[i,j] đơn vị thời gian. Giả sử tất cả bắt đầu vào thời điểm 0, hãy tìm cách bố trí mỗi công việc cho mỗi người sao cho thời ...

Nguồn đề bài: http://vn.spoj.com/problems/ASSIGN1/

1. Đề bài ASSIGN1 spoj

Có n người, n việc (1 < n ≤ 200). Người thứ i thực hiện công viêc j mất C[i,j] đơn vị thời gian. Giả sử tất cả bắt đầu vào thời điểm 0, hãy tìm cách bố trí mỗi công việc cho mỗi người sao cho thời điểm hoàn thành công việc là sớm nhất có thể.

Input

– Dòng đầu: N
– Tiếp theo là ma trận C[i,j]. (thuộc kiểu Integer)

Output

– Ghi thời điểm sớm nhất hoàn thành.

Example

Input:
4
10 10 10 2
10 10 3 10
4 10 10 10
10 5 10 10
Output:
5

2. Thuật toán ASSIGN1 SPOJ

– sử dụng chặt nhị phân thời gian nhỏ nhất thỏa mãn, giả sử đang chặt tới thời điểm mid, xây dựng một đồ thị gồm các cạnh có trọng số <=mid, sau đó tôi tìm xem có the ghép N công việc cho N người hay không (sử dụng kiến thức cặp ghép). Nếu thỏa mãn thì chặt nhỏ thời gian thỏa mãn, ngược lại chặt tăng thời gian thỏa mãn.

– Code cặp ghép các bạn có thể tìm trên site

3. code tham khảo C++ và pascal ASSIGN1 spoj

a. Code pascal

b. Code c++