Nộp bài | Các bài nộp | Làm tốt nhất | Về danh sách bài |
BBTSP - Bài toán người du lịch (Người giao hàng) |
Hè đến rồi, mùa du lịch lại đến, gia đình bạn có kế hoạch đi du lịch ở đâu chưa? Còn gia đình Lan đang có kế hoạch đi du lịch N thành phố, mỗi thành phố đúng một lần. Sau khi tham khảo các nhà cung cấp dịch vụ thì gia đinh Lan nhận được thông tin chi phí đi lại giữa hai thành phố bất kỳ, Lan đang băn khoăn không biết nên đi theo hành trình như thế nào để tiết kiệm nhất? Bạn hãy giúp gia đình Lan nhé.
Cho biết N là số thành phố (đánh số từ 1 đến N) và mảng C gồm N×N số nguyên không âm với Cij là chi phí đi từ thành phố i đến thành phố j (Cij có thể khác Cji, Cii = 0 với mọi i). Nhà Lan xuất phát từ thành phố 1. Hãy tìm một hành trình đi qua tất cả các thành phố, mỗi thành phố đúng một lần rồi quay về thành phố 1 với tổng chi phí thấp nhất.
Dữ liệu vào:
- Dòng đầu chứa số nguyên N là số thành phố.
- N dòng tiếp theo mô tả mảng C: Dòng thứ i chứa N số nguyên Ci1, Ci2, …, CiN
Dữ liệu ra:
- Dòng đầu ghi số nguyên không âm là chi phí nhỏ nhất.
- Dòng thứ 2 liệt kê theo thứ tự các thành phố đi qua (N + 1 số dương, mỗi số cách nhau bởi một dấu cách).
Ví dụ:
Dữ liệu vào:
4
0 20 35 42
20 0 34 30
35 34 0 12
42 30 12 0
Dữ liệu ra:
97
1 2 4 3 1
Giải thích: Hành trình 1 => 2 => 4 => 3 => 1 có tổng chi phí là 20 + 30 + 12 + 35 = 97 là chi phí thấp nhất.
Giới hạn: 1 ≤ N ≤ 16, 0 ≤ Cij ≤ 1000
Được gửi lên bởi: | noname00.pas |
Ngày: | 2017-05-15 |
Thời gian chạy: | 0.5s-2s |
Giới hạn mã nguồn: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Ngôn ngữ cho phép: | C-CLANG C CSHARP C++ 4.3.2 CPP CPP14 CPP14-CLANG C99 JAVA PAS-FPC PYTHON PYTHON3 |
Nguồn bài: | Bài tập thực hành CSL |