【技巧总结】——图论

一棵树的拓扑序个数

以每个点为根(换根dp),那一棵树的拓扑序个数是:

n ! / ( s i z [ 1 ] × s i z [ 2 ] × . . . × s i z [ n ] ) n!/(siz[1]\times siz[2]\times ...\times siz[n]) n!/(siz[1]×siz[2]×...×siz[n])(这里的 s i z siz siz是针对不同的根有的会不同)

经典例题:
小象砍树
在这里插入图片描述

最短路径树

这棵树上任意一点到根节点的距离,都是他们在原图中的最短路

求法非常简单,只需要在板子上加几行就行了
首先记录 y y y的前驱 p r e [ y ] pre[y] pre[y],记录的是边的编号,表示 y y y通过那一条边走来,在更新最短路的时候,更新编号即可

经典例题:
P a t h s a n d T r e e s Paths and Trees PathsandTrees(板子题)
疫情防控(这里面规定了每个点的路径具有唯一性,可以用最小路径树求解,还要树上差分或者树剖+线段树【滑稽】)

拓扑

逆向思维

如果发现按照题意进行拓扑会出错,不妨试一试反着来一遍,说不定会发现新大陆
经典例题:
最优排列

差分约束

基础式子

一定要记住!!
找最短路: a < = b + v a l ( b 连 向 a ) a<=b+val(b连向a) a<=b+valba
找最长路: a > = b + v a l ( b 连 向 a ) a>=b+val(b连向a) a

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值