模板题:洛谷P1656
code:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef pair<int,int> PII;
const int N=200;
vector<PII> edges[N];
vector<PII> ans;
int n,m,dfn[N],low[N],tot;
void tarjan(int u,int last){dfn[u]=low[u]=++tot;for(auto &[v,id]:edges[u]){if(id==last)continue;if(!dfn[v]){tarjan(v,id);low[u]=min(low[u],low[v]);if(low[v]>dfn[u]){ans.push_back({min(v,u),max(v,u)});}}else{low[u]=min(low[u],dfn[v]);}}
}
int main(){cin.tie(nullptr)->sync_with_stdio(false);cin>>n>>m;for(int i=1;i<=m;i++){int u,v;cin>>u>>v;edges[u].push_back({v,i});edges[v].push_back({u,i});}tarjan(1,0);sort(ans.begin(),ans.end());for(auto &[a,b]:ans){cout<<a<<' '<<b<<endl;}return 0;
}