传送门

md这题和矩阵树定理没半毛钱关系qwq

首先先不考虑有环,一个\(DAG\)个外向树个数为\(\prod_{i=2}^{n}idg_i(\)就是\(indegree_i)\),因为外向树每个点入度为一,对于一个点有入度个父亲可选,然后乘法原理起来就是答案

现在可能加一条边会有环,那么答案可以考虑总方案减不合法方案,不合法的有环方案就是环内的点连好了,然后剩下的点贡献方案,设\(s\)是个环,那么方案为\(\sum_{s}\prod_{i\notin s}idg_i=\sum_{s}\frac{\prod_{i=2}^{n}idg_i}{\prod_{i\in s}idg_i}=\prod_{i=2}^{n}idg_i\sum_{s}\frac{1}{\prod_{i\in s}idg_i}\)

后面那个东西,因为加了边\(x\rightarrow y\),所以一条\(y\)到\(x\)可以确定一个环,那么以\(y\)为初始状态,可拓扑排序一遍dp出来方案

注意\(y=1\)的情况

#include<bits/stdc++.h>
#define LL long long
#define db double
#define il inline
#define re registerusing namespace std;
const int N=1e5+10,mod=1e9+7;
il int rd()
{int x=0,w=1;char ch=0;while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}return x*w;
}
int to[N<<1],nt[N<<1],hd[N],dg[N],idg[N],tot;
void add(int x,int y){++tot,to[tot]=y,nt[tot]=hd[x],hd[x]=tot,++dg[y];}
int n,m,u,v,f[N],inv[N];
queue<int> q;int main()
{n=rd(),m=rd(),u=rd(),v=rd();for(int i=1;i<=m;++i){int x=rd(),y=rd();add(x,y);}int ans=1;for(int i=2;i<=n;++i) ans=1ll*ans*(dg[i]+(v==i))%mod;if(v!=u&&v!=1){memcpy(idg,dg,sizeof(dg));inv[0]=inv[1]=1;for(int i=2;i<=n+1;++i) inv[i]=(mod-1ll*mod/i*inv[mod%i]%mod)%mod;f[v]=1,q.push(1);while(!q.empty()){int x=q.front();q.pop();f[x]=1ll*f[x]*inv[dg[x]+(x==v)]%mod;for(int i=hd[x];i;i=nt[i]){int y=to[i];f[y]=(f[y]+f[x])%mod,--idg[y];if(!idg[y]) q.push(y);}}ans=1ll*ans*(1-f[u]+mod)%mod;}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/smyjr/p/10433079.html

luogu P3244 [HNOI2015]落忆枫音相关推荐

  1. P3244 [HNOI2015]落忆枫音(DAG上的动态规划问题,朱刘定理,乘法逆元)

    P3244 [HNOI2015]落忆枫音 样例太坑了!竟然和题目描述给的图不一样! 题目描述 给定一张有向无环图,这张图满足一个性质:以点1为根节点,保证至少有一棵有向树,连接所有的节点. 现在向这张 ...

  2. [HNOI2015] 落忆枫音

    题目描述 「恒逸,你相信灵魂的存在吗?」 郭恒逸和姚枫茜漫步在枫音乡的街道上.望着漫天飞舞的红枫,枫茜突然问出这样一个问题. 「相信吧.不然我们是什么,一团肉吗?要不是有灵魂......我们也不可能再 ...

  3. Bzoj4011 [HNOI2015]落忆枫音

    Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 983  Solved: 533 Description 「恒逸,你相信灵魂的存在吗?」 郭恒逸和姚枫 ...

  4. BZOJ4011:[HNOI2015]落忆枫音(DP,拓扑排序)

    Description 「恒逸,你相信灵魂的存在吗?」 郭恒逸和姚枫茜漫步在枫音乡的街道上.望着漫天飞舞的红枫,枫茜突然问出这样一个问题.  「相信吧.不然我们是什么,一团肉吗?要不是有灵魂--我们也 ...

  5. 洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】

    组合计数的一道好题.什么非主流题目 题目背景 (背景冗长请到题目页面查看) 题目描述 不妨假设枫叶上有 \(n​\) 个穴位,穴位的编号为 \(1\sim n​\).有若干条有向的脉络连接着这些穴位. ...

  6. [HNOI2015]落忆枫音

    题目描述 不妨假设枫叶上有 n个穴位,穴位的编号为 1 ~  n.有若干条有向的脉络连接 着这些穴位.穴位和脉络组成一个有向无环图--称之为脉络图(例如图 1),穴 位的编号使得穴位 1 没有从其他穴 ...

  7. 【题解】 [HNOI2015]落忆枫音 (拓扑排序+dp+容斥原理)

    原题戳我 Solution: (部分复制Navi_Aswon博客) 解释博客中的两个小地方: \[\sum_{\left(S是G中y→x的一条路径的点集\right))}\prod_{2≤j≤n,(j ...

  8. luogu3244 bzoj4011 HNOI2015 落忆枫音

    这道题目题面真长,废话一堆. 另外:这大概是我第一道独立做出来的HNOI2011年以后的题目了吧.像我水平这么差的都能做出来,dalao您不妨试一下自己想想? 题目大意:给一个DAG,其中1号点没有入 ...

  9. BZOJ 4011 HNOI2015 落忆枫音

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=4011 题目很长,写得也很有诗意与浪漫色彩,让我们不禁感叹出题人是一个多么英俊潇洒的人. 所 ...

最新文章

  1. Rocksdb 通过ingestfile 来支持高效的离线数据导入
  2. 改进YOLOv3 | IA-YOLO让恶劣天气的目标检测起飞了!!!
  3. java opennlp_使用opennlp进行文档分类
  4. 世界人口钟实时数据_用数字孪生重新定义智慧城市,美象VR推出MxDATA智慧城市CIM数据可视化平台...
  5. Eclipse 删除 空行
  6. 其中一个页签慢_VBA实战技巧15:创建索引页
  7. [Vulhub](WooYun-2016-199433)phpmyadmin反序列化漏洞
  8. 使用 C++ 处理 JSON 数据交换格式
  9. 组织管理插件-代码自动补全-语法检查等特性-SpaceVim v1.5.0
  10. 彩色烟雾一直是许多摄影师和摄影爱好者的首选武器
  11. 孟菲斯风格海报设计素材,艺术一点点
  12. 全网疯传!传智播客java基础入门第二版pdf
  13. iOS hicf与hice图片格式转换,以及图片处理
  14. 报班华为HCIE的课程需要有IA和IE的基础吗?
  15. 移动端h5原生分享到朋友圈、微博等
  16. C 语言中 求余运算 具体例子,C++中求余运算符(%)示例详解
  17. Android仿支付宝支付密码输入框
  18. 【已解决】Mac每次重启,谷歌Chrome都会丢失所有的扩展程序/extensions/插件
  19. 雷军:我也想做高级工程师 !
  20. 审查元素:html标签消失。

热门文章

  1. 如何在linux环境下安装kvm,如何在Linux发行版上安装和配置KVM和Open vSwitch?
  2. 中国第一批写java的人_中国java开源界最可爱的人们
  3. python全栈开发内容_Python全栈开发之Day02
  4. python 购物车程序_python_购物车程序
  5. c++ for循环 流程图_python 零基础必知--条件控制与循环语句
  6. androidstudio带pom的上传到jcenter_输送机@网带输送机@304网带输送机@304不锈钢网带输送机@输送机网带厂家定制...
  7. python矩形填充颜色_在Python中找到所有用0填充的矩形
  8. ajax省市二级联动硬编码,AJAX请求接受硬编码的JSON,但不接受软编码
  9. 卷积神经网络语音识别_用于物体识别的3D卷积神经网络
  10. 习题6-5 使用函数验证哥德巴赫猜想 (20 分)