欧拉回路
题号:NC50420
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
Special Judge, 64bit IO Format: %lld

题目描述

有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次。
一共两个子任务:
  1. 这张图是无向图。(50分)
  2. 这张图是有向图。(50分)

输入描述:

第一行一个整数t,表示子任务编号。,如果t=1则表示处理无向图的情况,如果t=2则表示处理有向图的情况。
第二行两个整数n,m,表示图的结点数和边数。
接下来m行中,第i行两个整数v_i,u_i,表示第i条边(从1开始编号)。保证
1.如果t=1则表示v_iu_i有一条无向边。
2.如果t=2则表示v_iu_i有一条有向边。
图中可能有重边也可能有自环。

输出描述:

如果不可以一笔画,输出一行NO。
否则,输出一行YES,接下来一行输出一组方案。
1.如果t=1,输出m个整数。令,那么e表示经过的第i条边的编号。如果p_i为正数表示从v_e走到u_e,否则表示从u_e走到v_e
2.如果t=2,输出m个整数。其中p_i表示经过的第i条边的编号。
示例1

输入

复制
1
3 3
1 2
2 3
1 3

输出

复制
YES
1 2 -3
示例2

输入

复制
2
5 6
2 3
2 5
3 4
1 2
4 2
5 1

输出

复制
YES
4 1 3 5 2 6

备注: