#ABC311C. 找出有向环

找出有向环

找出有向环

题目描述

给定一个具有 NN 个顶点和 NN 条边的有向图。

ii 条边从顶点 ii 连向顶点 AiA_i。(约束保证 iAii \neq A_i。)

请找出一个不含重复顶点的有向环。

可以证明,在该题的约束下解一定存在。

输入格式

输入按以下格式从标准输入给出:

NN
A1A_1 A2A_2 \dots ANA_N

输出格式

按以下格式输出一个解:

MM
B1B_1 B2B_2 \dots BMB_M

其中 MM 是顶点个数,BiB_i 是有向环中的第 ii 个顶点。

必须满足以下条件:

  • 2M2 \le M
  • Bi+1=ABiB_{i+1} = A_{B_i}(1iM11 \le i \le M-1)
  • B1=ABMB_{1} = A_{B_M}
  • iji \neq j 时,BiBjB_i \neq B_j

如果有多个解,输出任意一个均可。

样例

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

$7 \rightarrow 5 \rightarrow 3 \rightarrow 2 \rightarrow 7$ 确实是一个有向环。

其他可接受的输出还有:

4
2 7 5 3
3
4 1 6

注意,图可能不连通。

2
2 1
2
1 2

该样例同时包含边 121 \rightarrow 2212 \rightarrow 1

此时,1211 \rightarrow 2 \rightarrow 1 确实是一个有向环。

8
3 7 4 7 3 3 8 2
3
2 7 8

数据范围

  • 输入中的所有值均为整数。
  • 2N2×1052 \le N \le 2 \times 10^5
  • 1AiN1 \le A_i \le N
  • AiiA_i \neq i

提示

当顶点序列 B=(B1,B2,,BM)B = (B_1, B_2, \dots, B_M) 满足以下所有条件时,称它为一个有向环:

  • M2M \ge 2
  • 存在从顶点 BiB_i 到顶点 Bi+1B_{i+1} 的边。(1iM11 \le i \le M-1)
  • 存在从顶点 BMB_M 到顶点 B1B_1 的边。
  • iji \neq j 时,BiBjB_i \neq B_j

答案不唯一,输出任意合法解即可。

难度 普及
通过率
尝试 0
已通过 0
ID
3007
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签