Đặt kho hàng
Xem dạng PDF📖 Bài giảng & lời giải: đây là Bài tập 8 trong bài giảng Bài 33: Cây, QHĐ trên cây trên blog Lập trình thuật toán – có lý thuyết, mô phỏng từng bước, gợi ý và code C++ / Python.
⚠️ Lưu ý: hãy đảm bảo em đã thật sự cố gắng tự làm bài trước, rồi mới xem gợi ý và lời giải nhé!
🎓 Khóa học Lập trình Thuật toán thi đấu của thầy Nguyễn Việt Nam Sơn – 111 buổi video, kèm cặp cá nhân, luyện thi chuyên Tin · HSG Tin học · Tin học trẻ · đội tuyển quốc gia · Olympic/ICPC. 👉 Xem chi tiết khóa học · Thành tích học viên
📞 Đăng ký học: Zalo 0767 666 702 · Facebook Nguyễn Việt Nam Sơn · 🌐 laptrinhthuattoan.blogspot.com
Có $n$ thị trấn đánh số từ $1$ đến $n$, nối với nhau bằng $n - 1$ con đường hai chiều tạo thành một cây; con đường $u\ v\ w$ dài $w$. Thị trấn $i$ cần $c_i$ chuyến hàng. Nếu đặt kho ở thị trấn $u$ thì chi phí vận chuyển là $\sum_{i=1}^{n} c_i \cdot dist(u, i)$, trong đó $dist(u, i)$ là độ dài đường đi (duy nhất) giữa $u$ và $i$ trên cây. Hãy tìm thị trấn đặt kho có chi phí nhỏ nhất; nếu có nhiều thị trấn cùng chi phí nhỏ nhất, chọn thị trấn có chỉ số nhỏ nhất.
Dữ liệu vào
- Dòng 1: số nguyên $n$ ($1 \le n \le 10^5$).
- Dòng 2: $n$ số nguyên $c_1, c_2, \ldots, c_n$ ($0 \le c_i \le 1000$).
- $n - 1$ dòng tiếp theo, mỗi dòng gồm ba số nguyên $u, v, w$ ($1 \le u, v \le n$, $1 \le w \le 1000$). Dữ liệu bảo đảm các con đường tạo thành một cây.
Kết quả
In ra hai số nguyên trên một dòng, cách nhau một dấu cách: chỉ số thị trấn đặt kho và chi phí nhỏ nhất (chú ý chi phí có thể vượt quá phạm vi kiểu int).
Sample Input
5
2 1 3 1 4
1 2 3
1 3 1
3 4 2
3 5 5
Sample Output
3 28
Bình luận