Submit solution
Points:
1.00
Time limit:
1.5s
Memory limit:
256M
Input:
stdin
Output:
stdout
Author:
Problem type
Cho một cây gồm ~n~ đỉnh, các đỉnh được đánh số từ ~1~ tới ~n~, đỉnh 1 là gốc của cây. Trên mỗi đỉnh của cây lưu một số nguyên, ban đầu giá trị ở tất cả các đỉnh là ~0~. Bạn cần thực hiện ~q~ truy vấn thuộc một trong ba loại sau:
- add ~v~ ~k~ ~l~: Ta thay đổi giá trị các đỉnh thuộc cây con gốc ~v~ theo quy tắc sau:
- Giá trị của đỉnh ~v~ được cộng thêm ~k~;
- Giá trị các đỉnh là con trực tiếp của ~v~ được cộng thêm ~k-l~;
- Giá trị các đỉnh là con trực tiếp của con trực tiếp của ~v~ cộng thêm ~k-2×l~;
- Giá trị các đỉnh là con trực tiếp của con trực tiếp của con trực triếp của v được cộng thêm ~k-3×l~; các thao tác được thực hiện cho đến các nút lá của cây con gốc ~v~.
- get ~v~: tính giá trị của đỉnh ~v~.
- sum ~v~: tính tổng giá trị các đỉnh thuộc cây con gốc ~v.~ Yêu cầu: In ra kết quả các truy vấn loại 2 và 3 theo mô đun ~998244353.~
Input
- Dòng đầu tiên chứa số nguyên ~n~ với ~2≤n≤5×10^5~ là số đỉnh của cây.
- Dòng thứ hai chứa ~n-1~ số nguyên ~p_2,p_3,…,p_n~ với ~1≤p_i≤i-1~, trong đó ~p_i~ là cha trực tiếp của đỉnh ~i~.
- Dòng thứ ba chứa số nguyên ~q~ với ~1≤q≤5×10^5~ là số truy vấn cần thực hiện.
- Trong ~q~ dòng cuối cùng, mỗi dòng mô tả một truy vấn theo một trong ba định dạng add ~v~ ~k~ ~l~, get ~v~ hoặc sum ~v~ với ~1≤v≤n~ và ~0≤|k|,|l|≤2×10^9~.
Output
Với mỗi truy vấn loại 2 và 3, in ra một số nguyên không âm thể hiện kết quả của truy vấn theo mô đun ~998244353.~ Các số được viết trên một dòng của file dữ liệu vào/ra được ghi cách nhau bởi dấu cách.
Sample input
7
1 2 2 4 1 6
11
add 1 5 1
get 1
get 2
get 3
get 4
get 5
get 6
get 7
add 4 7 3
sum 2
sum 6
Sample output
5 4 3 3 2 4 3 23 7
Subtasks
- Có 30% số test ứng với ~1≤n,q≤7000;~
- Có 25% số test ứng với có truy vấn loại 1 với ~l=0;~
- Có 25% số test khác không có truy vấn loại 3;
- Có 20% số test còn lại có giới hạn như dữ kiện bài ra.
Comments