#5384. Người du lịch (Mã bài: TSP)

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Một người du lịch muốn xuất phát từ thành phố 1 , đi thăm tất cả n-1 thành phố khác, mỗi thành phố đúng một lần và cuối cùng quay trở về thành phố 1 . Chi phí đi lại giữa hai thành phố bất kỳ được cho trước. Hãy tìm một hành trình có tổng chi phí là nhỏ nhất.

Dữ liệu:

  • Dòng đầu tiên chứa số nguyên n - số thành phố.
  • n dòng tiếp theo, mỗi dòng chứa n số nguyên. Số ở hàng i , cột j là chi phí c_{ij} để đi từ thành phố i đến thành phố j .

Kết quả: Một số nguyên duy nhất là tổng chi phí nhỏ nhất của hành trình tìm được.

Ví dụ:

Dữ liệu:

4
0 20 42 35
20 0 30 34
42 30 0 12
35 34 12 0

Kết quả:

97

Giải thích: Hành trình tối ưu là 1 \to 2 \to 4 \to 3 \to 1 với tổng chi phí là 20 + 34 + 12 + 42 = 108 . (Lưu ý: ví dụ này có thể không chính xác, TSP là bài toán khó). Ví dụ đúng hơn: 1 \to 4 \to 3 \to 2 \to 1 có chi phí 35+12+30+20=97 .

Giới hạn:

  • 1 \le n \le 15 .
  • 1 \le c_{ij} \le 1000 với i \ne j , và c_{ii} = 0 .