CF1912H.Hypercatapult Commute

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

比特兰正在运行一种革命性的新型交通系统。这种系统既不需要道路,也不需要复杂的机械装置,只需要巨大的投石机。

系统的工作方式如下:比特兰有 nn 个城市。每个城市的市中心都有一台投石机。想要出行的人会被放进一个特殊的舱体,然后投石机会把这个舱体投送到另一个城市的市中心。每台投石机的威力都足以将舱体投送到任何其他城市,无论舱体里有多少乘客。唯一的问题是,给投石机充能需要很长时间,因此每台投石机每天只能使用一次。

乘客可能需要多次使用投石机。例如,如果乘客想从城市 AA 前往城市 BB,他们可以先用投石机从 AA 到 CC,再换乘另一台投石机从 CC 到 BB。

今天有 mm 位乘客。第 ii 位乘客想要从城市 aia_i 前往城市 bib_i。你的任务是,在一天之内,用最少次数的投石机发射,将所有乘客送达目的地,或者判断是否无法完成任务。

输入格式

输入的第一行包含两个整数 nn 和 mm(1≤n≤10001 \leq n \leq 1000,0≤m≤1050 \leq m \leq 10^5),分别表示城市数量和乘客数量。接下来的 mm 行,每行包含两个整数 aia_i 和 bib_i(1≤ai,bi≤n1 \leq a_i, b_i \leq n,ai≠bia_i \neq b_i)。

输出格式

第一行输出一个整数 kk,表示你需要使用的最少投石机发射次数。

接下来的 kk 行,每行输出两个整数 cic_i 和 did_i,表示一次从城市 cic_i 发射到城市 did_i 的投石机发射。

注意,你不需要输出每次发射时应该把哪些乘客放进舱体,但你给出的方案必须能让每位乘客都能到达目的地。

如果无法将所有乘客送达目的地,输出一行 −1-1。

输入输出样例

  • 输入#1

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

    输出#1

    5
    5 1
    1 2
    4 2
    2 3
    3 5
  • 输入#2

    3 6
    1 2
    1 3
    2 1
    2 3
    3 1
    3 2

    输出#2

    -1

说明/提示

由 ChatGPT 4.1 翻译

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

首页