Sâu di chuyển
View as PDF
Submit solution
Points:
0.30 (partial)
Time limit:
1.0s
Memory limit:
256M
Input:
stdin
Output:
stdout
Author:
Problem types
📘 Câu chuyện
Trên thân cây cổ thụ có n chiếc lá đánh số từ 1 đến n, nối với nhau thành một mạng lưới không chu trình (một cây).
Mỗi lá i ẩn chứa một giọt mật có độ ngon ai.
Chú sâu nhỏ thích phiêu lưu:
- Loại 1 (
1 u v): chú xuất phát tại láu, bò dọc thân cây đến lávvà liếm trọn mật của mọi lá trên hành trình. Bọn trẻ muốn biết tổng độ ngon mà chú sâu thưởng thức. - Loại 2 (
2 x w): bọn trẻ rót thêm mật vào láx, thay đổi độ ngon của lá đó thànhw.
📥 Input
- Dòng đầu chứa hai số nguyên n và q (
1 <= n, q <= 10^5). - Dòng thứ hai chứa n số nguyên
a1, a2, …, an(1 <= ai <= 10^9). - n - 1 dòng tiếp theo, mỗi dòng ghi hai số
u,v(1 <= u, v <= n) — mô tả một cành cây nối hai lá. - q dòng cuối, mỗi dòng mô tả một truy vấn:
1 u v— truy vấn loại 1.2 x w— truy vấn loại 2.
📤 Output
Với mỗi truy vấn loại 1, in ra trên một dòng duy nhất tổng độ ngon của các lá trên đường đi duy nhất từ u tới v.
Với truy vấn loại 2, không in gì.
🧪 Ví dụ
Input
5 5 3 2 5 4 1 1 2 1 3 2 4 2 5 1 4 5 2 2 10 1 4 5 1 3 4 1 2 3
Output
7 15 22 18
📎 Giải thích
- Ban đầu, đường 4 → 5 đi qua lá 4, 2, 5:
4 + 2 + 1 = 7. - Cập nhật lá 2 thành 10.
- Đường 4 → 5 lúc này:
4 + 10 + 1 = 15. - Đường 3 → 4: lá 3, 1, 2, 4:
5 + 3 + 10 + 4 = 22. - Đường 2 → 3: lá 2, 1, 3:
10 + 3 + 5 = 18.
📎 Hint
- Mình đã nói dùng euler tour thuần thì không được nhưng +lca thì không thành vấn đề. Hãy tìm cách triệt tiêu các cành không cần thiết trên euler tour và bù trừ.
| Subtask | Ràng buộc | Điểm |
|---|---|---|
| 1 | n, q <= 10^3 | 30% |
| 2 | n, q <= 10^4, ai <= 10^4 | 30% |
| 3 | Không giới hạn bổ sung | 40% |
Comments