传送门 :
思路使用 T a r j a n Tarjan Tarjan求边双连通分量,计算出所有叶子节点
叶子节点为 缩点后的VCC之后度数为 1 1 1的点
答案即为 c n t + 1 / 2 cnt+1 /2 cnt+1/2
Mycodemap mp;
const int N = 5e3+10;
vector g[N];
int dnt[N],low[N];
//dnt表示当前到达的点u low表示从u节点出发能遍历到的最小时间戳
int id[N],d[N];
//id表示 双连通分量的编号,d为节点i的度
bool is_bridge[N];
stack stk;
int dcc_cnt;//双连通分量
int tempstamp;//时间戳
int n,m;
void tarjan(int u,int from){
low[u] = dnt[u] = ++tempstamp;
stk.push(u);
for(auto j : g[u]){
if(!dnt[j]){
tarjan(j,i);
low[u] = min(low[u],low[j]);
//j节点永远走不到u节点 只能从u走到j
//说明 u - j 是一个桥边
if(dnt[u] >n>>m;
for(int i=1;i>a>>b;
g[a].pb(b);
g[b].pb(a);
}
for(int i=1;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?