進階班例題
子樹節點總和查詢
時間限制 1000 ms · 記憶體限制 256 MB · C++
小藍對子樹很有興趣。給定一棵以節點 $1$ 到 $N$ 編號的有根樹(以父節點表示的形式給出),她想知道每次查詢的節點,其子樹中所有節點的編號總和(包含自己)。
輸入說明
- 第一行輸入一個整數 $N$,表示節點數。
- 第二行輸入 $N$ 個整數 $p_1, p_2, \ldots, p_N$,其中 $p_i$ 表示節點 $i$ 的父節點,若 $p_i = -1$ 表示節點 $i$ 是根節點。
- 接下來一行輸入一個整數 $Q$,表示查詢筆數。
- 接下來 $Q$ 行,每行一個整數 $x$,表示查詢節點 $x$ 的子樹節點編號總和。
保證輸入構成一棵合法的有根樹。
- $1 \leq N, Q \leq 10^5$
輸出說明
對每筆查詢輸出一行,為節點 $x$ 的子樹節點編號總和。
範例
範例輸入 1
4 -1 1 1 2 2 3 2
範例輸出 1
3 6
C++77 / 50,000
「跑範例測資」只跑題目敘述上的範例,會顯示你的輸出與正確答案的對照; 「提交評測」會跑完整的測資並給實際結果,但不會顯示測資內容。兩者都不需要帳號,也不會留下成績紀錄。