51nod 1806 wangyurzee的树
来源:互联网 发布:唯一网络 编辑:程序博客网 时间:2024/06/05 18:08
purfer sequence的应用
#include<bits/stdc++.h>using namespace std;const long long mod=1e9+7;const int MAXN=1000100;long long fac[MAXN],inv[MAXN];long long powmod(long long x,long long p){long long ret=1;while(p){if(p&1)ret=ret*x%mod;p>>=1;x=x*x%mod;}return ret;}int main(){long long n,m,u[20],d[20],vis[20],i,j,cnt,sum,t,tmp,ans,flag;fac[0]=1;for(i=1;i<MAXN;i++){fac[i]=fac[i-1]*i%mod;}inv[MAXN-1]=powmod(fac[i-1],mod-2);for(i=MAXN-2;i>=0;i--)inv[i]=inv[i+1]*(i+1)%mod;while(~scanf("%lld%lld",&n,&m)){for(i=0;i<m;i++)scanf("%lld%lld",&u[i],&d[i]);if(n==1){if(m)printf("0\n");elseprintf("1\n");continue;}ans=powmod(n,n-2);for(i=1;i<(1<<m);i++){memset(vis,0,sizeof(vis));flag=0;cnt=sum=0;t=1;for(j=0;j<m;j++){if(i&(1<<j)){if(vis[u[j]])flag=1;cnt++;sum+=d[j]-1;vis[u[j]]=1;t=t*inv[d[j]-1]%mod;}}if(flag||sum>n-2)continue;tmp=fac[n-2]*inv[n-2-sum]%mod*powmod(n-cnt,n-2-sum)%mod*t%mod;if(cnt&1)ans=(ans-tmp+mod)%mod;elseans=(ans+tmp)%mod; }printf("%lld\n",ans);}}
阅读全文
0 0
- 51nod 1806 wangyurzee的树
- 51Nod-1806-wangyurzee的树
- 51nod 1806 wangyurzee的树
- 【51Nod 1806】wangyurzee
- 51nod 1806 wangyurzee的树(purfer,容斥原理)
- 51nod 1806 wangyurzee的树[purfer][容斥]
- 51nod 1806 wangyurzee的树(prufer编码求生成树的个数)
- 51NOD 1806 wangyurzee的树(容斥原理 + 组合数学)
- [容斥+Purfer编码] 51Nod1806 wangyurzee的树
- 51nod 1405 树的距离之和
- 51nod 1405 树的距离之和
- 51nod-1412 AVL树的种类
- [51nod 1801]wangyuzree的树
- [51nod 1412]AVL树的种类
- 51nod-1405 树的距离之和
- 51nod 1405 树的距离之和
- 51nod 1412 AVL树的种类
- 51nod 1737 配对【树的重心】
- ADA IV型数
- 实例讲解互联网协议
- 串口编程
- 关于FileReader和FileWriter作用在同一个文件上
- SpringMVC 笔记——注解方式声明控制器 及 资源访问
- 51nod 1806 wangyurzee的树
- hdu 5783 水
- openwrt下mipsel-openwrt-linux-gcc交叉编译-lmysqlclient
- lua 函数初识(六)
- Groovy实现接口
- Miller-Rabin算法
- Linux 磁盘与文件系统管理:认识 EXT2 文件系统
- SQL中的case when then else end用法
- node开发:windows环境下npm Cannot find module 'semver'