Universal Cup Judging System

Universal Cup

Time Limit: 2.0 s Memory Limit: 2048 MB Total points: 100 Difficulty: [show] Communication
Statistics

呢題係一道多階段(multi-pass)問題。

喺奇普托斯(Kivotos)嘅數碼檔案館入面,普拉娜(Plana)發現咗一批神秘嘅記錄,稱為「雙時態日誌(Bitemporal Logs)」。每份日誌由 $n$ 個標記為 $1$ 到 $n$ 嘅條目組成,構成一棵有根樹。不過,根據時間流係回溯性(邏輯 A)定係前瞻性(邏輯 B),結構上嘅限制會有所唔同:

  • 邏輯 A:棵樹以條目 $1$ 為根;其餘每個條目 $i$ 都有一個父節點 $p_i$,滿足 $p_i < i$。
  • 邏輯 B:棵樹以條目 $n$ 為根;其餘每個條目 $i$ 都有一個父節點 $q_i$,滿足 $q_i > i$。

為咗分析結構特性,普拉娜定義咗兩種類型嘅條目:

  • 終端(Terminal):唔作為任何其他條目嘅父節點嘅條目。
  • 樞紐(Hub):作為至少一個其他條目嘅父節點嘅條目。

普拉娜觀察到一種叫做邏輯共鳴(Logical Resonance)嘅完美對稱性。一份邏輯 A 日誌同一份邏輯 B 日誌之間滿足呢個性質,當且僅當:

$$\text{For every } i\text{, entry } i \text{ is a Terminal in Logic A} \iff \text{entry } i \text{ is a Hub in Logic B.}$$

普拉娜已經喺數學上證明咗,喺呢個限制之下,合法嘅邏輯 A 日誌同邏輯 B 日誌嘅數量係完全相同嘅。而家,佢交畀你一項任務:設計一個通用翻譯協議——即係一個雙射(bijection)——將一種日誌格式轉換成另一種。

正確性評測

你嘅程序喺每個測試點上面會被執行兩次。喺第一次運行入面,你嘅程序需要將每份邏輯 A 日誌轉換成滿足邏輯共鳴條件嘅邏輯 B 日誌。喺第二次運行入面,畀定由你第一次運行產生嘅一份邏輯 B 日誌,你嘅程序需要準確還原出原本嘅邏輯 A 日誌。

第二次運行嘅輸入由你第一次運行輸出嘅嗰批邏輯 B 日誌組成,但順序可能會被打亂。對於第二次運行入面輸入嘅每份邏輯 B 日誌,你需要輸出佢對應嘅邏輯 A 日誌。當且僅當對於每一份呢類邏輯 B 日誌,你嘅輸出都同第一次運行時生成佢嘅嗰份邏輯 A 日誌完全相同,你嘅程序先會被視為正確。

題目提供咗測試工具,以協助你開發同測試你嘅程序。

輸入格式

輸入嘅第一行包含兩個整數 $r$($r \in \{1, 2\}$)同 $T$($1 \le T \le 10^5$),分別代表運行階段編號同埋測試數據嘅組數。

對於每組測試數據,第一行包含一個整數 $n$($2 \le n \le 10^3$)。

如果 $r = 1$,第二行包含 $n$ 個整數 $p_1, p_2, \dots, p_n$,表示邏輯 A 日誌。保證 $p_1 = 0$,而且對於 $2 \le i \le n$,$1 \le p_i < i$ 係條目 $i$ 所連接嘅父條目。呢度我哋用 $0$ 表示一個條目冇父節點(即係樹根)。

否則,如果 $r = 2$,第二行包含 $n$ 個整數 $q_1, q_2, \dots, q_n$,表示邏輯 B 日誌。保證 $q_n = 0$,而且對於 $1 \le i \le n - 1$,$i < q_i \le n$ 係條目 $i$ 所連接嘅父條目。

保證所有測試數據入面 $n^2$ 嘅總和唔超過 $10^7$。

輸出格式

如果 $r = 1$,對於每組測試數據,輸出 $n$ 個由空格隔開嘅整數 $q_1, q_2, \dots, q_n$,表示轉換後嘅邏輯 B 日誌。必須滿足 $q_n = 0$,而且對於 $1 \le i \le n - 1$ 有 $i < q_i \le n$。同時必須滿足邏輯共鳴性質:條目 $i$ 喺邏輯 A 入面係終端,當且僅當條目 $i$ 喺邏輯 B 入面係樞紐。

否則,如果 $r = 2$,對於每組測試數據,輸出 $n$ 個由空格隔開嘅整數 $p_1, p_2, \dots, p_n$,表示還原後嘅邏輯 A 日誌。

範例

範例 1,階段 1

輸入
1 3
4
0 1 1 2
4
0 1 2 1
4
0 1 1 1
輸出
3 3 4 0
3 4 4 0
2 3 4 0

範例 1,階段 2

輸入
2 3
4
2 3 4 0
4
3 3 4 0
4
3 4 4 0
輸出
0 1 1 1
0 1 1 2
0 1 2 1

範例 1 說明

下圖展示咗一種合法嘅雙射方案。

problem_16339_5fc56a9536f47de069054071a1fe22c7.png

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.