hdu6064 Best theorem+Matrix-Tree定理

传送门
题意,就是给了一个有向图的邻接矩阵,问从1号点出发的欧拉回路有多少条。
求欧拉回路用到了Best theorem,其公式是这样的Best theorem 来自维基百科
这里写图片描述
tw(G)表示以w为根的生成树个数,用Matirx-Tree定理求解,可以看我的上一篇blog
Matrix-Tree定理
deg(v)表示顶点v的入度(其实入度等于出度,不然构不成欧拉图)。
!表示阶乘
当w==v时,计算的是deg(v)!
还要借鉴一下另两位大佬的blog 大佬1 大佬2
其中大佬1提到过这些事情:

求有向图的欧拉回路个数,是BEST定理
ec(G)=ts(G)⋅deg(s)!⋅∏v∈V, v≠s(deg(v)−1)!, ts(G):=以s为根的外向树的个数
如何计算有向图的外向树个数,这要用到MatrixTree定理
基尔霍夫矩阵K=度数矩阵D−邻接矩阵A
无向图的度数矩阵就是每个点自己的度数
有向图的度数矩阵就是每个点自己的入度
邻接矩阵是表示u−>v边的个数的矩阵
重边:按照边数计算,自环:不计入度数
无向图生成树计数:c=|K的任意1个n−1阶主子式|
有向图外向树计数:c=|去掉根所在的那阶得到的主子式|
很关键
那么学会了Matrix-Tree定理,以及Best theorem我们就可以放手干了,
以1为根的生成树个数,等于去除第1行第1列 的基尔霍夫矩阵的行列式
deg(s)=deg(1)
其他顶点遍历一下就好了。
但是,我们的矩阵存的是u->v边的个数的矩阵,当有重边时,best theorem 是按照多条边计算的,但是本题是是按照一条边计算的,所以要除以

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值