CỨU HỘ

Nguồn: None
Bài tập chưa có test

Vũ trụ Z có \(n\) hành tinh, các hành tinh được đánh số từ 1 đến \(n\). Một hệ thống gồm \(m\) đường dịch chuyển, đường dịch chuyển thứ \(k\ (1 \leq k \leq m)\) sẽ giúp di chuyển từ hành tinh \(i_{k}\) đến hành tinh \(j_{k}\) và mất chi phí là \(e(i_{k},\ j_{k})\). Một vụ nổ trong vũ trụ đã làm ảnh hưởng lớn đến tấy cả các hành tinh, trừ hành tinh số 1. Hành tinh số 1 lên kế hoạch cứu hộ cho \(n - 1\) hành tinh còn lại.

Các nhà khoa học ở hành tinh số 1 đã tìm ra cách di chuyển giúp đội cứu hộ có thể di chuyển đến một hành tinh khác với chi phí nhỏ hơn. Cụ thể, với số nguyên không âm \(a\) mà các nhà khoa học thiết đặt, giả sử đội cứu hộ lần lượt di chuyển qua dãy gồm \(p\) hành tính \(1 = x_{1},x_{2},\ldots,x_{p}\). Như vậy, đội cứu hộ sẽ phải sử dụng \(p - 1\) đường dịch chuyển, gọi \(s_{1}\) là tổng chi phí của \(p - 1\) đường dịch chuyển, gọi \(r_{1}\) là tổng chi phí của \(a\) đường dịch chuyển có chi phí lớn nhất trong \(p - 1\) đường dịch chuyển (nếu \(a > p - 1\) thì tính tổng chi phí của \(p - 1\) đường dịch chuyển), khi đó đội cứu hộ sẽ mất chi phí là \(s_{1} - r_{1}\).

Về phía các hành tinh, các nhà khoa học cũng đã tín toán ra số nguyên không âm \(b\) dựa trên mức độ ảnh hưởng của vụ nổ để xác định được chi phí di chuyển của cư dân. Cụ thể, nếu cư dân hành tinh \(i\) phải di chuyển qua dãy gồm \(q\) hành tinh \(i = y_{1},y_{2},\ldots,y_{1}\), gọi \(s_{2}\) là tổng chi phí của \(q - 1\) đường dịch chuyển, gọi \(r_{2}\) là tổng chi phí của \(b\) đường dịch chuyển có chi phí nhỏ nhất trong \(q - 1\) đường dịch chuyển (nếu \(b > q - 1\) thì tính tổng chi phí của \(q - 1\) đường dịch chuyển), khi đó cư dân sẽ mất chi phí là \(s_{2} + r_{2}\).

Chi phí để đội cứu hộ gặp được cư dân hành tinh \(i\) là tổng chi phí di chuyển của đội cứu hộ cộng với tổng chi phí của cư dân hành tinh \(i\) di chuyển để họ gặp được nhau.

Yêu cầu: Với mỗi hành tinh \(i\ (2 \leq i \leq n)\), hãy tính chi phí nhỏ nhất để đội cứu hộ xuất phát từ hành tinh 1 có thể gặp được cư dân của hành tinh \(i\).

Dữ liệu vào:

+ Dòng đầu tiên ghi 4 số \(n,m,\ a,\ b\);

+ Dòng thứ \(k\ (1 \leq k \leq m)\) trong \(m\) dòng tiếp theo chứa ba số nguyên dương \(i_{k},\ j_{k},\ e(i_{k},\ j_{k})\), trong đó có \(1 \leq i_{k}
eq j_{k} \leq n\)
\(e\left( i_{k},j_{k} \right) \leq 10^{9}\). Dữ liệu đảm bảo từ hành tinh \(i\) không có quá một đường dịch chuyển tới \(j\) và không tới chính nó.

Kết quả:

+ Ghi một dòng chứa \(n - 1\) số, số thứ \(i\) là số chi phí nhỏ nhất để đội cứu hộ có thể gặp cư dân của hành tính \(i + 1\), nếu đội cứu hộ không thể gặp được cư dân thì đưa ra số \(- 1\) tương ứng

Ví dụ:

Input Output Minh họa
4 4 1 1
1 2 1
2 3 2
3 4 3
4 2 1
0 1 2

Ràng buộc:

+ Subtask 1 (25% số điểm): \(n \leq 100;m \leq 1000;a = b = 0;\)

+ Subtask 2 (25% số điểm): \(n \leq 100;m \leq 1000;a = b = 1;\)

+ Subtask 3 (25% số điểm): \(n \leq 10^{5};m \leq 10^{5};a = b = 0\);

+ Subtask 4 (25% số điểm): \(n \leq 10^{5};m \leq 10^{5}\ ;0 \leq a,b \leq 3\).

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. npk1605 (5/10)
  2. hungeazy08 (4/26)
  3. trungnam (2/2)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]