本文主要是介绍T103489 【模板】边双连通分量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目地址
易错点:
- 设桥时需要考虑双向边.
- dfs时需要设置当前点的dcc.
#include<cstdio>
#include<iostream>
using namespace std;
const int MAXN=1e5,MAXM=1e6;
struct Edge{int from,to,nxt;
}e[MAXM];
int head[MAXN],edgeCnt=1;
void addEdge(int u,int v){e[++edgeCnt].from=u;e[edgeCnt].to=v;e[edgeCnt].nxt=head[u];head[u]=edgeCnt;
}
int dfn[MAXN],low[MAXN],dfnCnt=0;
bool bridge[MAXM];
void tarjan(int x,int in_edge){dfn[x]=low[x]=++dfnCnt;for(int i=head[x];i;i=e[i].nxt){int nowV=e[i].to;if(!dfn[nowV]){tarjan(nowV,i);if(low[nowV]>dfn[x]){bridge[i]=bridge[i^1]=1;}
这篇关于T103489 【模板】边双连通分量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!