You are on page 1of 3

BÀI TẬP THUẬT TOÁN TRÊN ĐỒ THỊ

Bài tập 1: Có hai chiếc bình với thể tích (sức chứa tối đa) lần lượt là m lít và n lít (m, n là
các số nguyên dương). Lúc đầu, cả hai chiếc bình đều không chứa nước. Mỗi chiếc bình cũng
không có độ đo, do đó không thể đong chính xác lượng nước nhỏ hơn thể tích mỗi bình bằng
đúng một chiếc bình nào. Bây giờ, bạn phải đong chính xác d lít nước bằng cách sử dụng cả
hai chiếc bình này (d là một số nguyên dương, d ≤ min{m, n}). Các phép toán bạn được thực
hiện đối với hai chiếc bình bao gồm:
• Đổ đầy nước vào một chiếc bình.
• Đổ hết nước ra khỏi một chiếc bình.
• Đổ nước từ chiếc bình này sang chiếc bình kia đến khi chiếc bình kia đầy hoặc chiếc bình
ban đầu hết nước.
Input:
• Lần lượt là các số m, n, d.
Output:
• Một dãy trạng thái gồm các cặp (xi , yi ) trong đó xi , yi lần lượt là thể tích nước đang có ở
chiếc bình thứ nhất và thứ hai tại lần thứ i.
• Bắt đầu với (x0 , y0 ) = (0, 0) và kết thúc khi đạt được (0, d) hoặc (d, 0).
Example:
• Input: 4 3 2
• Output: (0, 0), (0, 3), (3, 0), (3, 3), (4, 2), (0, 2)

1
Bài tập 2: Trên một chiếc máy có hiển thị dãy số X = (a1 , a2 , ..., an ) là hoán vị của n số
nguyên dương từ 1 đến n. Hoán vị này biến đổi mỗi ngày. Ở mỗi ngày, các phần tử ax được
thay thế bởi aax với mọi 1 ≤ x ≤ n. Bạn nhận được dãy số của ngày thứ k nào đó.

Đặt σ(x) = ax và f (x) là số nguyên dương m nhỏ nhất sao cho σ . . . ◦ σ}(x) = x.
| ◦ σ{z
m lần
n
1
Tìm hoán vị mà nhỏ nhất có thể.
X

i=1 f (i)
Input:
• Dòng thứ nhất gồm lần lượt hai số n và k.
• Dòng thứ hai gồm dãy số của ngày thứ k, dãy này có n số và có đủ các số nguyên dương
từ 1 đến n.
Output:
• Nếu không có hoán vị nào thỏa mãn, in ra NO.
• Nếu có, hãy in ra ít nhất một hoán vị thỏa mãn.
Example:
• Input:
8 998
12345678
• Output: 2 3 4 5 6 7 8 1

2
Bài tập 3: Có n thành phố ở một quốc gia nọ, và có m tuyến tàu hỏa giữa những chúng.
Mỗi tuyến tàu là hai chiều, nối giữa đúng hai thành phố. Ngoài ra, chỉ bằng việc sử dụng các
tuyến tàu này mà từ một thành phố bất kỳ, ta có thể đến được tất cả thành phố khác.

Các tuyến đường này đều được quản lý bởi công ty của chính phủ, nhưng chính phủ lại muốn
tư nhân hóa chúng. Chính phủ không muốn trao quyền điều hành cho một công ty duy nhất,
và đồng thời không muốn người dân phải mua nhiều gói đăng ký khác nhau. Cũng như để tạo
công bằng cho các công ty, thì để chính thức hóa mong muốn này, mô hình như sau được đề xuất.

Có k ≥ 2 công ty tư nhân, được đánh số 1, 2, . . . , k. Mỗi tuyến đường được quản lý bởi đúng
một trong các công ty. Thêm nữa:

• Với mỗi công ty, tồn tại 2 thành phố sao cho không thể đến thành phố này từ thành phố
kia chỉ bằng các tuyến đường do công ty đó quản lý.
• Mặt khác, cứ với 2 công ty, đều có thể đến một thành phố từ bất kỳ thành phố nào khác
chỉ bằng các tuyến đường do 2 công ty này quản lý.
Hãy chỉ ra một kế hoạch thỏa mãn mọi tiêu chí kể trên. Bạn có thể tùy chọn số k, không
nhất thiết là nhỏ nhất hay lớn nhất.
Input:
• Dòng thứ nhất gồm lần lượt hai số n và m.
• m dòng tiếp theo, dòng thứ i gồm 2 số nguyên xi , yi và đây là tuyến tàu hỏa thứ i nối
giữa 2 thành phố xi , yi .
Output:
• Dòng thứ nhất là số k.
• Dòng thứ hai là m số nguyên c1 , c2 , . . . , cm trong đó công ty ci quản lý tuyến đường i.
Example:
• Input:
59
12
13
14
15
23
24
25
34
35
• Output:
4
1231422

You might also like