点此看题面

大致题意: 让你求一个两边各有\(n\)和\(m\)个点的完全二分图有多少个生成树。

\(prufer\)序列

这是一道比较经典的利用\(prufer\)序列结论求解答案的计数题。

大致思路

考虑一张二分图求解\(prufer\)序列,由于\(prufer\)序列求解时最后剩下的两个点必定有边相连,因此这两个点必定在二分图两侧。

由于\(prufer\)序列中记录的是每个点相邻的点,也就是说,删去一个左边的点,则就会有一个右边的点被加入\(prufer\)序列。

因此,序列中共会有\(n-1\)个右边的点和\(m-1\)个左边的点。

所以答案就是\(m^{n-1}\cdot n^{m-1}\)。

代码

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename Ts>
#define Reg register
#define RI Reg int
#define RL Reg LL
#define Con const
#define CI Con int&
#define CL Con LL&
#define I inline
#define W while
#define LL long long
#define Inc(x,y) ((x+=(y))>=X&&(x-=X))
#define Qinv(x) Qpow(x,X-2)
using namespace std;
LL n,m,X;
I LL Qmul(RL x,RL y) {RL t=0;W(y) y&1&&Inc(t,x),(x<<=1)>=X&&(x-=X),y>>=1;return t;}//快速乘
I LL Qpow(RL x,RL y) {RL t=1;W(y) y&1&&(t=Qmul(t,x)),x=Qmul(x,x),y>>=1;return t;}//快速幂
I LL XSum(CL x,CL y) {return x+y>=X?x+y-X:x+y;}//取模优化求和
int main()
{
scanf("%lld%lld%lld",&n,&m,&X),printf("%lld",Qmul(Qpow(n,m-1),Qpow(m,n-1)));//计算并输出答案
return 0;
}

最新文章

  1. 10款免费而优秀的图表JS插件
  2. php继承、多态
  3. [BZOJ3786]星系探索
  4. July 25th, Week 31st Monday, 2016
  5. 20160805_Cent6.4x64_安装配置(含网卡驱动的配置)
  6. android开发环境重装系统之后的配置
  7. [Android] 停止、恢复 背影音乐的播放
  8. WIN7 以下创建cocos2d-x3.0+lua项目
  9. Ubuntu16 64位安装steam, 并解决无法启动的问题
  10. 【分支结构】Jcc 的一些助记
  11. Print Article hdu 3507 一道斜率优化DP 表示是基础题,但对我来说很难
  12. MyBatis开发学习记录
  13. 2017计算机学科夏令营上机考试-B编码字符串
  14. [usaco6.1.1Postal Vans]
  15. 第四十六篇--解析和保存xml文件
  16. ElasticSearch(简称ES)
  17. python页面解析_beautifulsoup试玩
  18. UIKIT_EXTERN和define定义常量
  19. SpringMybatis 整合JavaWeb
  20. Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)

热门文章

  1. linux 拓展之linux纯命令行界面变为图形界面
  2. 使用 Ninject
  3. zookeeper 编程框架 curator
  4. Java面试题搜集
  5. 资料收集:学习 Linux/*BSD/Unix 的 30 个最佳在线文档
  6. HDU 5318——The Goddess Of The Moon——————【矩阵快速幂】
  7. 微信小程序参考资料及网址
  8. 上下文(Context)和作用域(Scope)
  9. oracle OTT 学习
  10. 关于C#的Lock锁思考