P4355 [CERC2015] Kernel Knights
Description
Jousting is a medieval contest that involves people on horseback trying to strike each other with wooden lances while riding at high speed. A total of 2n knights have entered a jousting tournament – n knights from each of the two great rival houses. Upon arrival, each knight has challenged a single knight from the other house to a duel.
A kernel is defined as some subset S of knights with the following two properties:
• No knight in S was challenged by another knight in S.
• Every knight not in S was challenged by some knight in S.
Given the set of the challenges issued, find one kernel. It is guaranteed that a kernel always exists.
Input Format
The first line contains an integer n (1 ≤ n ≤ 100000) – the number of knights of each house. The knights from the first house are denoted with integers 1 through n, knights from the second house with integers n+1 through 2n.
The following line contains integers $f_1$, $f_2$,..., $f_n$ – the k-th integer fk is the index of the knight challenged by knight k $(n+1≤ f_k ≤2n)$.
The following line contains integers $s_1$,$s_2$,...,$s_n$ – the k-th integer sk is the index of the knight challenged by knight n+k $(1≤s_k ≤n)$.
Output Format
Output the indices of the knights in the kernel on a single line. If there is more than one solution, you may output any one.
SPJ的格式校验较为严格,请在每个数字后面都输出一个空格,且在最后一个空格输出后请不要输出任何符号。
Explanation/Hint
Central Europe Regional Contest 2015 Problem K