#5367. 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

Cho n thành phố và ma trận chi phí c[i][j] là chi phí đi từ thành phố i đến thành phố j . Hãy tìm một hành trình bắt đầu từ thành phố 1 , đi qua mỗi thành phố khác đúng một lần và quay trở về thành phố 1 với tổng chi phí là nhỏ nhất.

Dữ liệu:

  • Dòng đầu tiên là số nguyên n ( 1 \le n \le 20 ).
  • n dòng tiếp theo, mỗi dòng chứa n số nguyên, mô tả ma trận chi phí c[i][j] ( 1 \le c[i][j] \le 10^7 ).

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.

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 3 \to 4 \to 1 với chi phí 20+30+12+35=97 . Bài toán này là ứng dụng kinh điển của Quy hoạch động Bitmask, trong đó trạng thái DP được biểu diễn bằng một mặt nạ bit.