【题目描述】:因为某国被某红色政权残酷的高压暴力统治。美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵。该国有n个城市,这些城市以铁路相连。任意两个城市都可以通过铁路直接或者间接到达。uim发现有些铁路被毁坏之后,某两个城市无法互相通过铁路到达。这样的铁路就被称为key road。uim为了尽快使该国的物流系统瘫痪,希炸毁铁路,已达到存在某两个城市无法互相通过铁路到达的效果。然而,只有一发炮弹(美国国会不给钱了)。所以,他可以在哪些铁路中选择一条轰炸呢?【输入描述】:第一行n,m,分别表示有n个城市,总共m条铁路。以下m行,每行两个整数a,b,表示城市a和城市b之间有铁路直接连接。【输出描述】:输出有若干行。每行包含两个数字a,b(不保证a是key road。请注意:输出时,所有的数对必须按照a从小到大排序输出;如果a相同,则根据b从小到大排序。【样例输入】:6 61 22 32 43 54 55 6【样例输出】:1 25 6【时间限制、数据范围及描述】:时间:1s 空间:128M1<=n<=10000, 1<=m<=100000本题可以用tarjan求图的桥,然后按字典序输出即可。Code:#include #include #include #include #include #include const int N=10005;using namespace std;vector G[N];int n,m,low[N],dfn[N];int father[N];int tim,len;struct Node{ int x,y;}ans[N];bool cmp(Node p,Node q){ if(p.x==q.x){ return p.y 0&&low[i]>dfn[v]){ ans[++len].x=min(v,i); ans[len].y=max(v,i); } } sort(ans+1,ans+1+len,cmp); for(int i=1;i<=len;i++){ printf("%d %d\n",ans[i].x,ans[i].y); } return 0;}