题目链接:
https://www.luogu.org/problem/P1656
参考博客:
这个博客写的tarjan求桥的正解非常棒,建议再看一遍
https://www.luogu.org/blog/hsfzLZH1/solution-p1656
思路:
1:tarjan求桥
#include <bits/stdc++.h>
using namespace std;
const int maxn=151;
int dfn[maxn],low[maxn],n,m,x,y,timing,ans;
vector<int>e[maxn];
struct edge
{
int f,t;
}ed[maxn];
bool cmp(const edge a,const edge b)
{
if(a.f!=b.f)return a.f<b.f;
return a.t<b.t;
}
inline void add_ed(int x,int y)
{
ed[ans].f=min(x,y);
ed[ans].t=max(x,y);
ans++;
}
void tarjan(int u,int fa)
{
int child;
dfn[u]=low[u]=++timing;
for(int i=0;i<e[u].size();i++)
{
child=e[u][i];