Điểm hẹn của ba người
Xem dạng PDF📖 Bài giảng & lời giải: đây là Bài tập 7 trong bài giảng Bài 34: LCA, nhảy nhị phân 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
Ba bạn đang đứng ở ba đỉnh $a, b, c$ của một cây gồm $n$ đỉnh (đánh số từ $1$ tới $n$, mỗi cạnh dài $1$). Họ muốn chọn một đỉnh $x$ để gặp nhau sao cho tổng quãng đường ba người phải đi, tức $d(a, x) + d(b, x) + d(c, x)$, là nhỏ nhất ($d(u, v)$ là số cạnh trên đường đi giữa $u$ và $v$). Có thể chứng minh đỉnh $x$ như vậy luôn duy nhất.
Có $q$ truy vấn, mỗi truy vấn cho $a, b, c$ (không nhất thiết phân biệt). Với mỗi truy vấn, in ra đỉnh $x$ và tổng quãng đường nhỏ nhất.
Dữ liệu vào
- Dòng 1: hai số nguyên $n, q$ ($1 \le n \le 10^5$, $1 \le q \le 10^5$).
- $n - 1$ dòng tiếp theo, mỗi dòng gồm hai số nguyên $u, v$ ($1 \le u, v \le n$) mô tả một cạnh của cây. Đảm bảo các cạnh tạo thành một cây.
- $q$ dòng tiếp theo, mỗi dòng gồm ba số nguyên $a, b, c$ ($1 \le a, b, c \le n$).
Kết quả
In $q$ dòng, dòng thứ $j$ gồm hai số nguyên cách nhau một dấu cách: đỉnh hẹn $x$ và tổng quãng đường nhỏ nhất của truy vấn thứ $j$.
Sample Input
12 3
1 2
1 3
2 4
2 5
3 6
4 7
4 8
5 9
6 10
7 11
11 12
12 8 9
10 9 3
5 5 5
Sample Output
4 7
3 6
5 0
Bình luận