SHTSC记 13.12.28

本文深入讲解了图的深度优先搜索(DFS),包括桥、割点、双连通分量及强连通分量的概念与算法实现。探讨了如何通过DFS找到图中的桥,并介绍了双连通分量和强连通分量的应用场景。此外,还提到了2-SAT问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上周因老师不在停课一次

今天来了几个新同学,导致老师讲得比较认真。。

记了这么些笔记

图的DFS

桥割点 双连通分量 强连通分量

树上所有边都是桥

环上都不是桥

不在环中都是桥

枚举环巨慢

枚举边太慢

树边一定n – 1条和反向边 (剩下的点)

桥只可能是树边,推出一个图最多n – 1个桥

定义low函数 ,u及u的子孙,通过一条回边,能回到的最小祖先的序号

桥的条件 v是u的祖先 low[u] == d[v]

Dfs(u, p)

  T++;d[u] = t; low[u] = d[u];

  E =first[u];

  Whilee != 0  do begin

V = tail[e]

If d[v] = 0begin

  Dfs(v, u);

  Low[u] = min(low[u], low[v])

End;

Else if p != vthen low[u] = min(low[u], d[v])

 end;

  if …

end;

双连通分量和题目略去不讲

 

强连通分量缩点

前向边和交叉边居然可以忽略。。

Dfs(u(

  T++;d[u] = t; low[u] = t;

  E =find(u);

  Whilee != 0 do begin

V = tail[u];

If d[v] == 0then begin

  Dfs(v);

  Low[u] = min(low[u], low[v]);

End;

If (d[v]<d[u]) and (scc[v] == 0) low[u] = min(low[u], d[v]);

E = next[e];

  End;

End.            

讲了道T77

我:把无向图看成有向图,然后缩点,找入度为0和出度为0的点求最大值

马融:这样图就被你缩成一点了

我:。。。

还好yzq大神也犯了这个错误(明显受到了lrj的书里一道等价性证明的题目影响)

正解是找双连通分量缩点,缩图后度为1的点除以2取上整

似乎还讲错了,找的是边-双连通分量而非点-双连通分量

2-SAT           

方案的输出比较神  !a - a  有边 a = T a - !a 有边 a = F 都没边就随便选                                           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值