「一本通 3.7 例 1」欧拉回路

「一本通 3.7 例 1」欧拉回路

暂无测试数据。

题目描述

原题来自:UOJ #117

有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次。

一共两个子任务:

  1. 这张图是无向图。(\(50\) 分)

  2. 这张图是有向图。(\(50\) 分)

输入格式

第一行一个整数 \(t\),表示子任务编号。\(t \in \{1, 2\}\),如果 \(t = 1\) 则表示处理无向图的情况,如果 \(t = 2\) 则表示处理有向图的情况。

第二行两个整数 \(n, m\),表示图的结点数和边数。

接下来 \(m\) 行中,第 \(i\) 行两个整数 \(v_i, u_i\),表示第 \(i\) 条边(从 \(1\) 开始编号)。保证 \(1 \leq v_i, u_i \leq n\)。

  1. 如果 \(t = 1\) 则表示 \(v_i\) 到 \(u_i\) 有一条无向边。

  2. 如果 \(t = 2\) 则表示 \(v_i\) 到 \(u_i\) 有一条有向边。

图中可能有重边也可能有自环。

输出格式

如果不可以一笔画,输出一行 NO

否则,输出一行 YES,接下来一行输出一组方案。

  1. 如果 \(t = 1\),输出 \(m\) 个整数 \(p_1, p_2, \dots, p_m\)。令 \(e = \lvert p_i \rvert\),那么 \(e\) 表示经过的第 \(i\) 条边的编号。如果 \(p_i\) 为正数表示从 \(v_e\) 走到 \(u_e\),否则表示从 \(u_e\) 走到 \(v_e\)。

  2. 如果 \(t = 2\),输出 \(m\) 个整数 \(p_1, p_2, \dots, p_m\)。其中 \(p_i\) 表示经过的第 \(i\) 条边的编号。

样例数据

样例输入 1

1
3 3
1 2
2 3
1 3

样例输出 1

YES
1 2 -3

样例输入 2

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

样例输出 2

YES
4 1 3 5 2 6

限制与提示

\(1 \leq n \leq 10^5, 0 \leq m \leq 2 \times 10^5\)

信息

难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者

相关

在下列训练计划中:

信息学奥赛一本通提高篇-题库