杰哥的噩梦
Background
Special for beginners, ^_^
Description
杰哥是一名优秀的程序员,不仅腹含千斤算法,还拥有一双极其犀利的“DB眼”,目视十行,流动的代码在杰哥眼里只是一条一条流转的汇编,所有的逻辑错误在杰哥的眼里都是高亮,凡经杰哥提交的OJ全部是喜悦的绿色,经杰哥过手的程序全部老老实实地运行。但是杰哥也有缺点,虽然所有的错误都会在杰哥的双眼中高亮显示,但是有时候杰哥看不见代码……
一个月黑风高的夜晚,小雨淅沥,做了一天作业的杰哥刚上床睡觉,突然一个电话,杰哥的项目组里面的一位同学打来电话,“你的代码有问题”。“What?不可能呀!”杰哥冥思苦想了好久,结果睡着了……不过杰哥因为一句一句地回忆代码导致用脑过度,做了一个噩梦,梦中杰哥被别人发现了一个BUG! 梦中的杰哥变得异常狂躁,想要砸东西,于是杰哥萌生了破坏学校的服务器连接的想法,杰哥可以关掉任意的服务器或者切断任意连线:
学校有若干服务器N,任意两个服务器可以通过直接连线通信或者通过一些中间服务器间接通信,总共铺设了M条通信线,下面是一个样例:
1,2,…,6为服务器编号,每两个服务器之间至少有一条路径连通,当切断线(3,4)的时候,可以发现,整个网络被隔离为{1,2,3},{4,5,6}两个部分:
若关闭服务器3,则整个网络被隔离为{1,2},{4,5,6}两个部分:
在学校的网络中关闭哪些服务器或者切断哪些线后,能够使得整个网络被隔离为两个部分,杰哥当然会选择关掉最少的服务器或者切断最少的连线的方案。
那么,你知道如果关服务器的话杰哥可能会在哪些中做选择呢?切线的话杰哥会在哪些线中选择呢?在上面的例子中,满足条件的有线(3,4),服务器3和服务器4。
Format
Input
第1行:2个正整数,N,M。表示服务器编号为1-N,连线的数量为M。2<=N<=1,000, 1≤M≤50,000
第2..M+1行:2个正整数,u,v。表示存在一条边(u,v),连接了u,v两台服务器。1<=u<v<=N
保证输入所有服务器之间至少有一条连通路径。
Output
第1行:一些整数,用空格’ ’隔开,每个整数是一个服务器编号,表示杰哥可能会选择这个服务器。从小到大排列。若没有满足要求的服务器,该行输出Null(注意大小写)
第2..x行:每行2个整数,”u v”表示满足要求的通信线,u<v。首先按u的大小排序,u小的排在前,u相同时,v小的排在前面。若没有满足要求的连线,则不输出
Sample 1
Input
6 7
1 2
1 3
2 3
3 4
4 5
4 6
5 6
Output
3 4
3 4
Limitation
1s, 131072KiB for each test case.
Hint
注意输入有重边的情况