BZOJ 4766 文艺计算姬 Prufer序列
来源:互联网 发布:潘多网络是做什么的 编辑:程序博客网 时间:2024/04/30 06:21
题目大意:给定一个一边点数为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次,共有
两种情况相乘得到答案为
这道题我本来想偷懒用python但是它太慢了直接T爆
#include <cstdio>using namespace std;typedef long long LL;LL n,m,MOD;LL f_times(LL x,LL y) { LL tmp=0; while(y) { if(y&1) tmp=(tmp+x)%MOD; x=(x+x)%MOD; y>>=1; } return tmp;}LL f_pow(LL x,LL y) { LL tmp=1; while(y) { if(y&1) tmp=f_times(tmp,x); x=f_times(x,x); y>>=1; } return tmp;}int main() { scanf("%lld%lld%lld",&n,&m,&MOD); printf("%lld\n",f_times(f_pow(n,m-1),f_pow(m,n-1))); return 0;}
n,m,mod=map(int,raw_input().split())print((n**(m-1))*(m**(n-1))%mod)
阅读全文
0 0
- BZOJ 4766 文艺计算姬 Prufer序列
- BZOJ 4766: 文艺计算姬 prufer编码
- BZOJ 4766(文艺计算姬-矩阵树定理+找规律)
- bzoj 4766: 文艺计算姬 矩阵树定理+快速幂
- 4766: 文艺计算姬
- bzoj 1005 明明的烦恼 【Prufer序列】
- BZOJ 1211 树的计数 Prufer序列
- BZOJ 1005 prufer序列+分解质因数
- [完全二分图生成树个数] BZOJ 4766 文艺计算姬
- [bzoj4766]文艺计算姬
- prufer序列
- prufer序列
- Prufer 序列
- prufer序列
- BZOJ 1005 明明的烦恼 Prufer序列+组合数学+高精度
- BZOJ 1211 HNOI2004 树的计数 Prufer序列
- 【BZOJ 1005】[HNOI2008]明明的烦恼 【Prufer序列】
- bzoj 1430: 小猴打架 (prufer序列+数论)
- CentOS7 安装mongodb
- Android Java GPS坐标与高斯坐标相互转换(一)
- centos学习:什么是fgetc() fgets() cat more是怎么来的?
- CRC的基本原理详解
- PHP入门之文件、时间、GD图形图像
- BZOJ 4766 文艺计算姬 Prufer序列
- CI常用(总结)
- 浅谈JavaScript、ES5、ES6
- 学习Linux命令(40)
- js 实现hashmap
- java文件上传ajaxFileUpload.js使用方法
- Maven3.5.0安装与配置
- Eclipse导入Maven工程的乱码问题解决
- 1302: 玩转数组(4)