Login with GitHub. Nope?
修正 C++ 的程式碼在使用一定量動態記憶體後會產生 RF 的問題 @ 2019/12/6 4:45pm NeoHOJ 強勢復活中 (Open beta)
Submit  Ranklist

Problem : 270 - Regions

Problem Statistics

Solved Member: 7  Submission: 56  User Tried: 7

Statement:

聯合國區域發展局(UNRDA)有一個定義明確的組織結構。該局總共聘用了N位職員,每一位分別來自世界上R個不同的區域(每個區域的代號是 1 至 R ,但並無任何特別順序)。職員依年資從 1 編號到 N,編號 1 職員的頭銜為主任(Chair),也是最資深的職員。除了主任之外,每一位職員都有一位小老闆(direct supervisor),小老闆一定比該職員資深。

我們定義職員 A 為職員 B 的上司(manager)唯若且若 A 是 B的小老闆或 A 是 B的小老闆的上司。因此主任是其他所有職員的上司。此外任兩位職員也不可能相互都是對方的小老闆。

然而,聯合國調查局(UNBI)最近接到一些檢舉:UNRDA的內部組織並不平衡,某些區域比其他區域更獲得重視。為了調查這些檢舉的真實性,UNBI希望發展一個資訊系統,給定UNRDA的管理層級資訊,就可以回答下述問題:給定兩個不同的區域代號 r1 與 r2 ,試問有多少職員組合 (e1, e2)滿足職員 e1 來自區域 r1 、職員 e2 來自區域 r2 ,且 e1 是 e2 的上司。

Task:

給定每一位職員的區域屬性,以及誰是誰的小老闆的資訊,請寫一個程式來回答問題。

範圍限制:
1 ≤ N ≤ 200000,職員人數。
1 ≤ R ≤ 25000,區域數。
1 ≤ Q ≤ 200000,你的程式所需回答的提問數。
1 ≤ Hk ≤ R,職員 k 的區域屬性 (1 ≤ k ≤ N)。
1 ≤ Sk ≤ k,職員 k 的小老闆編號 (2 ≤ k ≤ N)。
1 ≤ r1, r2 ≤ R,每一個提問中的區域代號。

Input:Output:

第一行有三個以空白隔開的正整數N、R和Q。

接下來的N行,依照年資多寡描述N位職員的資訊,這N行中第k行描述職員k的資訊。這些資料的第一行(描述主任的資訊)有單一整數:主任的區域屬性H1。其餘N-1行,每行兩個以空白隔開的整數:職員k的小老闆Sk與職員k的區域屬性Hk

接下來有Q行,每行以兩個正整數r1, r2表示一個提問。
共輸出Q行,第i行表示第i個提問的答案。

Sample Input:Sample Output:

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

Source:

IOI 2009

Problem Setter

Testdata:

TestTimeMemoryScore
01000ms131072kb
12000ms131072kb1
22000ms131072kb1
32000ms131072kb1
42000ms131072kb1
52000ms131072kb1
62000ms131072kb1
72000ms131072kb1
82000ms131072kb1
92000ms131072kb1
102000ms131072kb1
112000ms131072kb1
122000ms131072kb1
132000ms131072kb1
142000ms131072kb1
152000ms131072kb1
168000ms131072kb5
178000ms131072kb5
188000ms131072kb5
198000ms131072kb5
208000ms131072kb5
218000ms131072kb5
228000ms131072kb5
238000ms131072kb5
248000ms131072kb5
258000ms131072kb5
268000ms131072kb5
278000ms131072kb5
288000ms131072kb5
298000ms131072kb5
308000ms131072kb5
318000ms131072kb5
328000ms131072kb5