「一本通 3.7 例 1」欧拉回路
暂无测试数据。
题目描述
原题来自:UOJ #117
有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次。
一共两个子任务:
这张图是无向图。(\(50\) 分)
这张图是有向图。(\(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\)。
如果 \(t = 1\) 则表示 \(v_i\) 到 \(u_i\) 有一条无向边。
如果 \(t = 2\) 则表示 \(v_i\) 到 \(u_i\) 有一条有向边。
图中可能有重边也可能有自环。
输出格式
如果不可以一笔画,输出一行 NO
。
否则,输出一行 YES
,接下来一行输出一组方案。
如果 \(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\)。
如果 \(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
- 通过率
- ?
- 上传者
相关
在下列训练计划中: