CNHOM - Chia Nhóm
Dữ liệu vào: standard input
Dữ liệu ra: standard output
Giới hạn thời gian: 1.0 giây
Giới hạn bộ nhớ: 256 megabyte
Đăng bởi: nguyenxuanhaa3

                     Xét một tập hợp gồm N phần tử (các phần tử được đánh số từ 1 đến N). Khi hoạt động, một phần tử có thể ảnh hưởng đến những phần tử khác. Để đo tính "độc lập" giữa 2 phần tử, người ta định nghĩa "khoảng cách" giữa 2 phần tử x, y là một số nguyên dương D(x, y) = D(y, x) sao cho khoảng cách này càng lớn thì độ độc lập giữa 2 phần tử càng cao. Trong một số công việc, người ta phải chia các phần tử thành những nhóm hoạt động riêng rẽ, vì vậy việc chia nhóm cần đảm bảo tính độc lập giữa các nhóm càng cao càng tốt. Độ "phân tách" D(A, B) giữa 2 nhóm A, B được định nghĩa như là khoảng cách nhỏ nhất giữa một phần tử của A và một phần tử của B:

                        D(A, B) = Min {D(x, y), x Î A, y Î B}

và độ "phân tách" D của một cách chia được gọi là độ phân tách của 2 nhóm "gần nhất" thuộc cách chia này:

                        D = Min {D(A, B)}

            Bạn hãy viết một chương trình xác định độ phân tách lớn nhất có thể được, khi chia một tập hợp N phần tử với những khoảng cách đã cho, thành K nhóm.

            Input File: NHOM.INP

- Dòng đầu ghi 2 số N và K,

- Dòng thứ i trong N dòng tiếp, i = 1, 2, ..., N ghi N số D(i, j), j = 1, 2, ..., N là khoảng cách giữa i và j. Chú ý D(i, j) = D(j, i); D(i, i) = 0.

                        Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu trắng.

            Output File: NHOM.OUT: 

                         - Gồm 1 dòng ghi độ phân tách tìm được.

            Giá trị giới hạn: N không quá 200, K lớn hơn 1 và nhỏ hơn N, các giá trị D(i, j) là những số nguyên không âm, nhỏ hơn 32768.

Ví dụ

  • input
    4 2
    0 4 5 2
    4 0 3 6
    5 3 0 3
    2 6 3 0
    output
    3

                       

Back to Top