CF22E.Scheme

提高+/省选-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

To learn as soon as possible the latest news about their favourite fundamentally new operating system, BolgenOS community from Nizhni Tagil decided to develop a scheme. According to this scheme a community member, who is the first to learn the news, calls some other member, the latter, in his turn, calls some third member, and so on; i.e. a person with index i got a person with index f__i, to whom he has to call, if he learns the news. With time BolgenOS community members understood that their scheme doesn't work sometimes — there were cases when some members didn't learn the news at all. Now they want to supplement the scheme: they add into the scheme some instructions of type (x__i, y__i), which mean that person x__i has to call person y__i as well. What is the minimum amount of instructions that they need to add so, that at the end everyone learns the news, no matter who is the first to learn it?

为了尽快获知他们最喜爱的全新操作系统 BolgenOS 的最新消息,来自下塔吉尔的 BolgenOS 社区决定设计一种传播方案。根据该方案,首位获知消息的社区成员会拨打电话通知另一名成员,后者再通知第三名成员,依此类推;即编号为 ii 的人需通知编号为 fif_i 的人(若其获知了消息)。然而,随着时间推移,BolgenOS 社区成员发现该方案有时失效——某些成员根本无法获知消息。现在他们希望对该方案进行补充:向方案中添加若干形如 (xi,yi)(x_i, y_i) 的指令,表示编号为 xix_i 的人还需额外通知编号为 yiy_i 的人。问:至少需要添加多少条这样的指令,才能确保无论最初由哪一位成员获知消息,最终所有成员均能获知该消息?

输入格式

The first input line contains number n (2 ≤ n ≤ 105) — amount of BolgenOS community members. The second line contains n space-separated integer numbers f__i (1 ≤ f__i ≤ n, i ≠ f__i) — index of a person, to whom calls a person with index i.

第一行输入包含一个整数 $ n (( 2 \leq n \leq 10^5 $)—— BolgenOS 社区成员的数量。
第二行包含 $ n $ 个用空格分隔的整数 $ f_i (( 1 \leq f_i \leq n $,且 $ i \neq f_i $)—— 表示编号为 $ i $ 的人所拨打对象的编号。

输出格式

In the first line output one number — the minimum amount of instructions to add. Then output one of the possible variants to add these instructions into the scheme, one instruction in each line. If the solution is not unique, output any.

第一行输出一个数字——需要添加的最少指令数。然后输出一种可能的添加这些指令到电路图中的方案,每行一条指令。若解不唯一,输出任意一种即可。

输入输出样例

  • 输入#1

    3
    3 3 2

    输出#1

    1
    3 1
  • 输入#2

    7
    2 3 1 3 4 4 1

    输出#2

    3
    2 5
    2 6
    3 7

输入解题思路,AI测评打分。不知道怎么写?

首页