P1656炸铁路

一、题目描述

  

 

 二、解题思路

  tarjan求割边模板题,用个答案数组存答案,求出来后排序就可以了。

三、代码实现

复制代码
 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 int G[200][200];
 4 int low[200],dfn[200],t = 1;
 5 int root = 1;
 6 int m,n;
 7 vector <pair<int,int>> ans;
 8 void dfs(int cur,int father)
 9 {
10     low[cur] = t;
11     dfn[cur] = t;
12     t++;
13     for(int i = 1;i <= n;i++){
14         if(G[cur][i]){
15             if(dfn[i] == 0){
16                 dfs(i,cur);
17                 low[cur] = min(low[cur],low[i]);
18                 if(low[i] > dfn[cur])
19                     ans.emplace_back(make_pair(cur,i));
20             }
21             else if(i != father)
22                 low[cur] = min(dfn[i],low[cur]);
23         }
24     }
25     return;
26 }
27 int main()
28 {
29     int x,y;
30     cin >> n >> m;
31     for(int i = 1;i <= n;i++)
32         for(int j = 1;j <= n;j++)
33             G[i][j] = 0;
34     for(int i = 1;i <= m;i++){
35         cin >> x >> y;
36         G[x][y] = 1;
37         G[y][x] = 1;
38     }
39     dfs(1,root);
40     sort(ans.begin(),ans.end());
41     for(auto &u: ans)
42         cout << u.first << ' ' << u.second << endl;
43     return 0;
44 }
复制代码
posted @   scannerkk  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示