a481. 樹的維護
標籤 :
通過比率 : 24人/40人 ( 60% ) [非即時]
評分方式:
Tolerant

最近更新 : 2013-11-30 02:03

內容

//很久沒有引進新的演算法了...先來一個比較常規的吧...

給出一棵有根樹,節點編號1..N,根節點是1號節點,每個節點都有一個權值。

維護以下幾種操作:

1.詢問某兩節點x和y之間的唯一路徑上所有節點的權值之和,含x和y;

2.修改某個節點的權值;

3.修改某個節點的父節點。

輸入說明

第一行一個正整數N(1≤N≤100,000),表示節點個數。

接下來N行,第i行有兩個整數pi和wi,表示節點i的父節點和節點i的權值。特別的,若i=1則pi=0。

接下來的一行又一個正整數Q(1≤Q≤100,000),表示維護的操作個數。

接下來Q行,每行三個整數t,x和y。

第一個數字t表示操作的類型(1、2或3)。

若t=1,則表示詢問節點x和節點y之間的唯一路徑上所有節點的權值之和;

若t=2,則表示把節點x的權值修改為y; 

若t=3,則表示把節點x的父節點修改為節點y,當然x≠1,保證操作后仍然是一棵樹;

保證操作合法。 

保證任意時刻任意節點的權值為非負整數且不超過一萬。 

輸出說明

對於每個t=1的詢問輸出答案。 

範例輸入 #1
5
0 1
1 2
1 3
2 4
2 5
5
1 3 5
2 1 2
1 3 5
3 2 3
1 3 5
範例輸出 #1
11
12
10
測資資訊:
記憶體限制: 512 MB
提示 :
動態樹 Link-Cut Tree
標籤:
出處:
[管理者: liouzhou_101 (王启圣) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」