#LAISIR43. 祖先的總值加總

祖先的總值加總

🧭 題目名稱:祖先的總值加總

📝 題目背景:

在遙遠的族群中,每位族人繼承了祖先的智慧與力量。族人的關係可表示成一棵有根樹,父親與子女之間以邊相連。每位族人有一個代表其個人能力的整數值。現在,每位族人都想知道,他們自身的力量究竟有多少是來自祖先的影響 —— 也就是所有祖先的力量總和。

你的任務是,對於每位族人,計算其所有祖先(不包含自身)的力量總和。


📥 輸入格式:

輸入包含多行資料:

  • 第一行一個整數 n(2 ≤ n ≤ 10⁴),代表樹中節點的數量(節點編號為 1 到 n)。
  • 第二行包含 n 個整數 a_1, a_2, ..., a_n(-10⁵ ≤ a_i ≤ 10⁵),第 i 個整數代表編號為 i 的節點的力量值。
  • 接下來 n-1 行,每行兩個整數 u v,表示節點 u 是節點 v父親
  • 最後一行一個整數 r(1 ≤ r ≤ n),表示樹的根節點編號。

保證輸入構成一棵合法的有根樹(連通、無環、每個節點有且僅有一個父節點,除了根)。


📤 輸出格式:

輸出一行包含 n 個整數,第 i 個數字表示編號為 i 的節點,其所有祖先的力量總和。各數字之間以空格分隔。


📘 輸入範例:

5
1 2 3 4 5
1 2
1 3
2 4
2 5
1

📗 輸出範例:

0 1 1 3 3

🔍 範例說明:

根節點為 1,其力量值為 1:

  • 節點 1:沒有祖先 → 總和 0
  • 節點 2:祖先為 [1] → 總和 1
  • 節點 3:祖先為 [1] → 總和 1
  • 節點 4:祖先為 [2, 1] → 總和 2 + 1 = 3
  • 節點 5:祖先為 [2, 1] → 總和 2 + 1 = 3

🔢 資料範圍與限制:

  • 2 ≤ n ≤ 10⁴
  • -10⁵ ≤ a_i ≤ 10⁵
  • 樹結構為合法的有根樹
  • 根節點在邊關係中從未作為子節點出現