题目 20363

Naboj

查看题解 ↗GitHub ↗如何评测
题号
20363
时间限制
1000 ms
内存限制
256 MB
标签
比赛CSP-S
来源
CSP-S 国外模拟赛 21 - T1

第 1 题 Naboj (naboj)

CSP-S 国外模拟赛 21 · 时间限制 1.0 s · 空间限制 256 MB · 46 个测试点 · 全文比较(过滤行末空格及文末回车)

本题使用文件输入输出:输入文件 naboj.in,输出文件 naboj.out。

题目描述

Šikić 先生是一位化学老师,他正在用 nn 个金属球和 mm 根铜导线做实验。他将一些对金属球用导线相连,使这些球(直接或间接地)与其他球都相连。他想要教学生关于电荷的知识,因此他将通过按顺序给金属球充电来演示它。

Šikić 先生可以让每个球带上正负电荷的一种。当一个金属球带负电荷时,与这个金属球相连的所有导线中的电子都将被排斥到与该导线相连的另一个金属球上。反过来,当一个金属球带正电荷时,与这个金属球相连的所有导线中的电子都将受这个金属球的吸引。无论导线的先前状态如何,给球充电对导线的影响都相同。

在刚上课的时候,所有的金属球都不带电,导线中的电子不动。对于每根导线,Šikić 先生都想让它其中电子的流向是某一个确定的方向。请帮他确定一个给金属球充电的顺序,使得最后电子的流向是他想要的。

输入格式

第一行两个数 nn 和 mm,意义如题目描述。

接下来 mm 行每行两个整数 aia_i 和 bib_i,表示金属球 aia_i 和 bib_i 之间有一根导线相连,并且这根导线中的电子应更靠近 aia_i 而不是 bib_i。在一对金属球之间最多只有一条导线。所有的金属球都通过导线直接或间接相连。

输出格式

如果不可能让最后电子的流向是 Šikić 先生想要的,输出 −1-1。否则输出 kk,表示需要充电的金属球数量。kk 必须小于等于 2×1052 \times 10^5。

接下来 kk 行,每行输出两个整数 cic_i 和 did_i(1≤ci≤n, 0≤di≤11 \le c_i \le n,\ 0 \le d_i \le 1),分别表示第 ii 步 Šikić 先生需要充电的金属球的编号和是给这个金属球充正电荷(用 di=1d_i = 1 表示)还是负电荷(用 di=0d_i = 0 表示)。如果有多种方案,输出其中一种即可。

样例

样例 1

输入:

文本
3 3
1 2
2 3
1 3

输出:

文本
3
2 1
3 0
1 1

样例 2

输入:

文本
4 3
1 2
3 2
2 4

输出:

文本
4
2 1
4 0
3 1
1 1

样例 3

输入:

文本
5 10
2 4
3 4
1 4
4 5
3 2
2 1
5 2
1 3
5 3
1 5

输出:

文本
-1

提示

样例解释 1

首先,我们给金属球 2 充正电荷。金属球 1, 2 和金属球 2, 3 之间的导线中的电子现在更靠近 2。金属球 1, 3 之间的导线仍保持中性。

现在我们给金属球 3 充负电荷。金属球 2, 3 之间的导线状态不变,金属球 1, 3 之间的导线中的电子更靠近金属球 1。

最后我们给金属球 1 冲正电荷。金属球 1, 3 之间的导线状态不变,但金属球 1, 2 之间的导线现在将更靠近金属球 1,目标流向达成。

数据范围

对于全部数据,1≤n≤2×1051 \le n \le 2 \times 10^5,1≤m≤5×1051 \le m \le 5 \times 10^5,1≤ai,bi≤n1 \le a_i, b_i \le n,ai≠bia_i \neq b_i。

本题分值与 COCI 2021-2022#6 分值相同,满分 110 分。

数据下载

题目 20363 的公开数据

正在读取文件列表…

常用命令

题目 20363 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。