$Prufer$序列
\(Prufer\)序列
\(Prufer\)序列与树的相互转换:
树->\(Prufer\)序列
找到一个编号最小的叶子结点,把这个点删掉并且把跟他连着的那个点的编号加入\(Prufer\)序列。
\(Prufer\)序列->树
设集合\(S={1,\cdots,n}\)
找到一个不在\(Prufer\)序列中且在\(S\)中的数,将它与\(Prufer\)序列中的第一个元素连边,并将这个数和\(Prufer\)序列的第一个元素删掉。
最后\(S\)会剩下最后两个元素,把这两个元素连边。
性质
性质\(1\)
\(Prufer\)序列与无根树一一对应。
性质\(2\)
\(n\)个点有编号的无根树有\(n^{n-2}\)个。
或\(n\)个点的完全图的生成树个数有\(n^{n-2}\)个。
性质\(3\)
度数为\(d\)的点在\(Prufer\)序列中出现\(d-1\)次。
例题
[HNOI2004]树的计数
给定度数\(d_1\sim d_n\),求有多少树。
定理:给定度数\(d_1\sim d_n\)的无根树有\(\frac{(n-2)!}{\prod\limits_{i=1}^n{(d_i-1)!}}\)
证:
\(Prufer\)序列中\(i\)元素出现\(d_i-1\)次。
\(n-2\)个元素的排列有\((n-2)!\)。
然后每一种元素自己内部的排列有\((d_i-1)\)。
相除即可。实际上就是可重排列。
[HNOI2008]明明的烦恼
\(n\)个点给定\(k\)个点的度数\(d_1\sim d_k\),求有多少树。
这题是上一道题的拓展。
我们先设\(s=\sum\limits_{i=1}^k (d_i-1)\)。
在\(Prufer\)序列中这\(k\)个点会出现\(s\)次,这里的方案数为\({n-2}\choose{s}\)。
然后我们考虑这\(k\)个点的排列,跟上一问一样的计算,方案数为\(\frac{s!}{\prod\limits_{i=1}^k (d_i-1)}\)。
最后我们考虑剩下\(n-2-s\)个位置,每个位置可以填\(n-k\)个数中的一个,方案数为\((n-k)^{n-2-s}\)。
所以总的答案就是\({{n-2}\choose{k}}\frac{s!}{\prod\limits_{i=1}^k (d_i-1)}(n-k)^{n-2-s}\)
随机推荐
- 清除eclipse 里面主函数的加载记录 launch configuration删除
我们eclipse 里面执行的程序,应用 把他记录下来,生成配置文件. 当我们导出行的jar包的时候,需要制定运行的主函数. 会看到很多的历史主程序,带来方便的同时,也产生了影响. 需要清除写记录的 ...
- You Are Given a Decimal String...
B. You Are Given a Decimal String... 这个题需要求出从某一个尾数 n 变为 m 所需要的 x 和 y 的最小个数(i+j) 那么就需要预处理出一个数组来存放这个值. ...
- css彩色(渐变)文字
css彩色文字也称渐变文字 在张鑫旭博客首页看到这效果,就自己研究了一下. 实现方法加个背景然后在根据文本剪切,再把文本填充为透明色让之前设置的背景颜色显示出来即可. -webkit-backgrou ...
- 如何在一个页面使用多个router-view显示不同的内容
todo https://www.jianshu.com/p/92f61bf9db81
- 第八周课程总结 & 实验报告(六)
第八周课程总结 一.包装类 介绍 装箱与拆箱 应用 二.异常 基本概念 基本格式 异常类的继承结构 throws关键字 throw关键字 Exception类和RuntimeException类 自定 ...
- 10、kubernetes之RBAC认证
一.kubectl proxy # kubectl proxy --port=8080 # curl http://localhost:8080/api/v1/ # curl http://local ...
- linux 加多播协议(IGMP)
可能你所用的内核编译时没有选中multicast的选项. 追问 感谢您的回复,但是我还是不太明白你说的multicast选项是什么意思.能更详细的说一下吗,谢谢.或者能直接用QQ或者MSN帮忙看看 ...
- js对数组分组处理
一.js数组分组 1.js对数据分组类似group by 源码如下: <!DOCTYPE html> <html lang="en"> <head&g ...
- java面试要点
基础篇 基本功 面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自 ...
- C# 隐藏显示桌面图标
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...