#P1656. 炸铁路

炸铁路

题目描述

给定一个 nn 个点、mm 条边的无向图(可能存在重边),请求出图中所有的桥(也称割边)。

在一个无向图中,如果删去某条边之后,整个图的连通块数量增加,则称这条边为桥。

输入格式

第一行两个整数 n, mn,\ m,分别表示点数和边数。

接下来 mm 行,每行两个整数 a, ba,\ b,表示一条连接 aa 与 bb 的无向边。

输出格式

按字典序输出所有的桥,每行一条,输出该桥的两个端点(较小的编号在前)。

排序规则:先按第一个端点升序,第一个端点相同时再按第二个端点升序。若图中不存在桥,则输出为空。

样例 #1

样例输入 #1

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

样例输出 #1

3 4

提示

样例说明:图由两个三角形 {1,2,3}\{1,2,3\} 与 {4,5,6}\{4,5,6\} 通过边 3–43\text{–}4 相连。两个三角形内部的边都在环上,删去后不影响连通;只有边 3–43\text{–}4 删去后会使图断成两块,因此它是唯一的桥。

数据范围:对于 100%100\% 的数据,1≤n≤1501 \le n \le 150,1≤m≤50001 \le m \le 5000,1≤a,b≤n1 \le a,b \le n。

注意图中可能存在重边:两点之间若有两条平行边,它们互为退路,都不是桥。

时间限制 1000ms1000\text{ms},内存限制 256MB256\text{MB}。