P4355 [CERC2015] Kernel Knights
题目描述
马上长矛比武是一种中世纪的比赛,参赛者骑在马上,用木制长矛高速冲刺,试图击中对方。共有 2n 名骑士参加了马上长矛比武比赛——来自两个伟大敌对家族的 n 名骑士。到达后,每位骑士向另一家族的一名骑士发起了挑战。
一个“核”被定义为骑士的某个子集 S,具有以下两个特性:
- S 中没有骑士被 S 中的其他骑士挑战。
- 不在 S 中的每个骑士都被 S 中的某个骑士挑战。
给定发出的挑战集,找到一个“核”。保证“核”总是存在。
输入格式
第一行包含一个整数 n (1 ≤ n ≤ 100000)——每个家族的骑士数量。第一个家族的骑士用整数 1 到 n 表示,第二个家族的骑士用整数 n+1 到 2n 表示。
接下来的行包含整数 $f_1$, $f_2$,..., $f_n$——第 k 个整数 $f_k$ 是骑士 k 挑战的骑士的编号 $(n+1 ≤ f_k ≤ 2n)$。
接下来的行包含整数 $s_1$,$s_2$,...,$s_n$——第 k 个整数 $s_k$ 是骑士 n+k 挑战的骑士的编号 $(1 ≤ s_k ≤ n)$。
输出格式
在一行中输出“核”中的骑士编号。如果有多个解,你可以输出其中任何一个。
SPJ 的格式校验较为严格,请在每个数字后面都输出一个空格,且在最后一个空格输出后请不要输出任何符号。
说明/提示
Central Europe Regional Contest 2015 Problem K。
题面翻译由 ChatGPT-4o 提供。