BZOJ 4766 文艺计算姬 Prufer序列

博客介绍了如何解决一个关于计算带标号完全二分图K_{n,m}的生成树个数的问题。通过转化为求合法Prufer序列的数量,利用Prufer序列的性质,分析在二分图中删除叶子节点的过程,得出A集合和B集合的点被删除并加入序列的次数,从而得出答案为(nm-1) * (mn-1)。由于原始题目对时间复杂度的要求,Python 解决方案无法通过。" 107931981,9343066,Linux关闭防火墙与SELinux配置指南,"['Linux', '服务器', '防火墙', 'SELinux', '配置']

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

题目大意:给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},计算其生成树个数。
1 <= n,m,p <= 1e18

因为prufer序列对应着唯一的一棵树,问题转为计算有多少合法的prufer序列。
“一种生成Prufer序列的方法是迭代删点,直到原图仅剩两个点。”根据prufer序列的性质,最后剩下的两个点一定有一条边,在二分图中有连边的两点一定处于不同集合。在删除时会“移去所有叶子节点(度为1的顶点)中标号最小的顶点和相连的边,并把与它相邻的点的编号加入Prufer序列中”,每删除一个点都需要将与它连边的点加到prufer序列中,而二分图中的边两端的点一定属于不同集合,那么A集合有n-1个点被删除,也就是说B集合中的数需要被加入n-1次,共有mn1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值