02/10/2018, 14:52

LEM3 spoj – TRIP

Nguồn đề bài: http://vn.spoj.com/problems/LEM3/ 1. Đề bài LEM3 spoj Trong kì nghỉ hè năm nay sherry được bố thưởng cho 1 tour du lịch quanh N đất nước tươi đẹp với nhiều thắng cảnh nổi tiếng ( vì sherry rất ngoan ). Tất nhiên sherry sẽ đi bằng máy bay. Giá vé máy bay từ đất nước ...

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

1. Đề bài LEM3 spoj

Trong kì nghỉ hè năm nay sherry được bố thưởng cho 1 tour du lịch quanh N đất nước tươi đẹp với nhiều thắng cảnh nổi tiếng ( vì sherry rất ngoan ). Tất nhiên sherry sẽ đi bằng máy bay.

Giá vé máy bay từ đất nước i đến đất nước j là Cij ( dĩ nhiên Cij có thể khác Cji ). Tuy được bố thưởng cho nhiều tiền để đi du lịch nhưng sherry cũng muốn tìm cho mình 1 hành trình với chi phí rẻ nhất có thể để dành tiền mua quà về tặng mọi người ( Các chuyến bay của sherry đều được đảm bảo an toàn tuyệt đối ).

Bạn hãy giúp sherry tìm 1 hành trình đi qua tất cả các nước, mỗi nước đúng 1 lần sao cho chi phí là bé nhất nhé.

Input

Dòng 1: N (5 < N < 16)

Dòng thứ i trong N dòng tiếp theo: Gồm N số nguyên, số thứ j là Cij (0 < Cij < 10001)

Output

Gồm 1 dòng duy nhất ghi chi phí bé nhất tìm được

Example

2. Hướng dẫn LEM3 spoj

Bài này sử dụng BIT và BFS:

Dùng một dãy bit để biểu diễn cách đi của Sherry.

Gọi kc[i][k] là khoảng cách min để sherry đi qua các nước đã được biểu diễn bằng bit 1 trong i và nước cuối cùng đi qua là k.

BFS trên đồ thị có các đỉnh là một cặp số (i,k) (với i, k như trên)

từ một đỉnh (i,k) có thể đi tới đỉnh (i1,k1) với điều kiện:

  • Đỉnh k1 được biểu diễn với bit 0 trong i. Khi đó ta có công thức:

kc[i1][k1]=kc[i][k]+c[k][k1];

Mình nói hơi khó hiểu. h mk sẽ share code. Nếu có thắc mắc, các bạn có thể đăng nhập và cmt, mk sẽ giải thích. Cảm ơn!

+1