TopCoder

User's AC Ratio

100.0% (3/3)

Submission's AC Ratio

75.0% (3/4)

Tags

Description

完整題本 PDF:中文英文馬來文

Git 是一個在軟體開發產業中廣泛使用的現代版本控制系統。Git 的一個關鍵功能是建立分支的能力,分支是可以合併回去的獨立開發線。這可以簡化開發過程,使得功能的平行開發可以在不互相干擾的情況下進行。

圖:一個儲存庫中前幾個提交的 Git 圖。

在 Git 儲存庫中,為了編輯程式碼庫,開發者建立提交(commit)來記錄他們所做的更改。提交是程式碼庫在某個時間點的快照。更重要的是,除了初始提交之外的所有提交還會記錄父提交的 ID。如果儲存庫的歷史是簡單且線性的,這會形成一條鏈。

圖:一個簡單的 Git 圖。它是線性的,因為沒有建立分支。

然而,在更複雜的儲存庫中,不同的開發者在不同的功能上工作可能會編輯相同的檔案。在這種情況下,他們應該建立分支以避免他們的編輯互相干擾。當一筆新提交的父提交已經有 \textit{後代} 的話,就會自動建立分支。這也會導致一個提交成為多個提交的父提交。

在有分支的儲存庫中,開發者應該只在將分支合併回去時一次處理衝突。這會建立一種稱為合併提交的特殊類型提交。合併提交會有兩個父提交。

圖:一個更複雜的 Git 圖。它不是線性的,因為建立了分支並合併回去。

如你所見,要了解儲存庫的歷史,繪製圖表是視覺化歷史的好方法。為了區分不同分支的歷史,我們可以用不同的顏色為不同分支的節點著色。我們可以說,如果一個分支已經合併到另一個分支,則該分支是死亡的。另外,在圖的右下角(紅色的線)也可以發現,如果一個提交沒有其他提交的父提交是它,則該分支可以被認為在該提交後死亡

在分支的整個生命週期中,它應該被分配一個與所有活著的分支的顏色都不同的顏色。每當一個分支死去,原本該分支被分配的顏色可以再重新被分配給這之後新建立的分支。

現在,我們有了 Git 儲存庫的歷史。然而,我們只有提交的列表。對於每個提交,你會得到時間戳和父提交的索引。你的任務是確定需要多少種顏色來根據所述規則為圖表著色。

Input Format

輸入的第一行包含一個整數 $N$,表示儲存庫中的提交數量。

第二行包含一個整數 $T_1$,表示初始提交的時間戳。

接下來的 $N-1$ 行輸入,每行代表一個提交。每行以一個字元 $type_i$ 開始。如果 $type_i$ 是 $\texttt{C}$,後面會跟著兩個整數 $T_i$ 和 $P_i$。$T_i$ 表示第 $i$ 個提交的時間戳,$P_i$ 表示父提交是第 $P_i$ 個提交。

如果 $type_i$ 是 $\texttt{M}$,後面會跟著三個整數 $T_i$ $P_i$ $P_i'$。$T_i$ 表示第 $i$ 個提交的時間戳,$P_i$ 表示父提交是第 $P_i$ 個提交。$P_i'$ 表示另一個父提交是第 $P_i'$ 個提交。

  • $1 \leq N \leq 10 ^ 6$
  • $0 \leq T_i \leq 10 ^ 9$
  • 保證所有的 $T_i$ 都是不同的。
  • $1 \leq P_i, P_i' \leq N$
  • $P_i \neq i$
  • $P_i' \neq i$
  • $P_i \neq P_i'$
  • $T_{P_i} < T_i$
  • $T_{P_i'} < T_i$

Output Format

輸出包含一個整數,表示最少需要幾種相異的顏色才能為這張歷史圖上色。

Sample Input 1

3
1
C 2 1
M 3 1 2

Sample Output 1

2

Sample Input 2

5
1
C 10 1
C 9 1
C 8 1
C 7 1

Sample Output 2

4

Sample Input 3

3
1
M 3 1 3
C 2 1

Sample Output 3

2

Hints

Problem Source

Subtasks

No. Testdata Range Score

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 2097152 65536
1 1000 2097152 65536
2 1000 2097152 65536
3 1000 2097152 65536
4 1000 2097152 65536
5 1000 2097152 65536
6 1000 2097152 65536
7 1000 2097152 65536
8 1000 2097152 65536
9 1000 2097152 65536
10 1000 2097152 65536
11 1000 2097152 65536
12 1000 2097152 65536
13 1000 2097152 65536
14 1000 2097152 65536