BSOJ我也不知道在哪.

容易想到容斥。

考虑不合法的方案 想到强制某个点的度数为限制即可。

这样就变成了了总方案-一个不合法+两个不合法-3个......的模型了。

坑点 当强制两个相同的点时 方案数为0.

当 序列长度>n-2的时候 方案数为0.

注意一些边界条件啥的。这样的话利用爆搜就很好写了。

const ll MAXN=1000010;
ll n,len,m;
ll ans,fac[MAXN],inv[MAXN];
ll w[MAXN],du[MAXN],vis[MAXN];
inline ll C(ll a,ll b){return a<b?0:fac[a]*inv[b]%mod*inv[a-b]%mod;}
inline ll ksm(ll b,ll p)
{
ll cnt=1;
while(p)
{
if(p&1)cnt=cnt*b%mod;
b=b*b%mod;p=p>>1;
}
return cnt;
}
inline void dfs(ll x,ll sum,ll cnt,ll v)
{
if(x==m+1)
{
v=v*ksm(n-sum,n-2-cnt)%mod;
if(sum&1)ans=(ans-v)%mod;
else ans=(ans+v)%mod;
return;
}
dfs(x+1,sum,cnt,v);
if(du[x]-1<=n-2-cnt&&!vis[w[x]])
{
vis[w[x]]=1;
dfs(x+1,sum+1,cnt+du[x]-1,v*C(n-2-cnt,du[x]-1)%mod);
vis[w[x]]=0;
}
}
signed main()
{
freopen("1.in","r",stdin);
get(n);get(m);fac[0]=1;
rep(1,m,i)get(w[i]),get(du[i]);
rep(1,n,i)fac[i]=fac[i-1]*i%mod;
inv[n]=ksm(fac[n],mod-2);
fep(n-1,0,i)inv[i]=inv[i+1]*(i+1)%mod;
dfs(1,0,0,1);putl((ans+mod)%mod);
return 0;
}

最新文章

  1. 使用text存储hash类型的数据 Use text filed to store the hash map
  2. 设计模式:工厂方法模式(Factory Method)
  3. centos6.2下安装redis和phpredis扩展,亲测好用
  4. js为select添加option
  5. [LeetCode] 116. Populating Next Right Pointers in Each Node 解决思路
  6. DevC++ 工程没有调试信息的解决办法
  7. angular-ui-bootstrap插件API - Pagination
  8. 问题记录-运行Tomcat,项目程序没有响应
  9. js监听事件
  10. [转]真正的中国天气api接口xml,json
  11. “流式”前端构建工具——gulp.js 简介
  12. Docker Swarm bind 数据持久化
  13. Python全栈之路----Python2与Python3
  14. .NET Core开发日志——从ASP.NET Core Module到KestrelServer
  15. Dwr 框架简单实例
  16. ubuntu14.04下安装ffmpeg
  17. Qt下 QString转char*(转)
  18. STL中list中push_back(对象)保存对象的内部实现
  19. javascript 实现页面加载完的操作
  20. html超链接返回上一页面

热门文章

  1. 无间歇文字滚动_ 原生js实现新闻无间歇性上下滚动
  2. Linux系统安装JDK8
  3. 重学c#系列——对c#粗浅的认识(一)
  4. 浅谈.Net Core DependencyInjection源码探究
  5. flask 源码专题(五):SqlAlchemy 中操作数据库时session和scoped_session的区别
  6. java 面向对象(九):类的结构:构造器(一)简介;属性赋值顺序;JavaBean的概念
  7. JS中this指向的更改
  8. IDEA搭建SpringMVC简单接口框架(Maven项目)
  9. 没错,用三方 Github 做授权登录就是这么简单!(OAuth2.0实战)
  10. JavaScript动画实例:曲线的绘制