LGP3244题解
考虑正常 DAG 的有向生成树的方案数。
很明显发现,每个节点只需要挑一个父亲即可。方案数为 \(\prod_{i=2}^nd[i]\)。
再考虑加上新边后新增的 DAG 数量。
将点分为两类。假设这条新边是 \((s,t)\),那么我们将能到达 \(s\) 且能够被 \(t\) 到达的节点拎出来算一类,剩下的节点算另一类。
因为是考虑父亲,所以二类节点的贡献仍然是度数。考虑一类节点的贡献。
一类节点的贡献相当于 \(t\) 无法到达 \(s\) 的树的方案数。正难则反,考虑有多少种方法使得 \(t\) 能够到达 \(s\)
总方案数是很容易计算的,度数之积。
我们每次钦定一条从 \(t\) 到 \(s\) 的链,然后强制钦定这些边都要连上。
其他节点的贡献仍然是度数之积。
我们让度数之积最后乘上,变成钦定节点的度数之积的逆元。
我们现在做的问题相当于从 \(t\) 到达 \(s\) 的每条路径的权值之积,随便搞个 DP 统计一下就好了。
复杂度是线性的。(逆元可以预处理)
#include<cstdio>
typedef unsigned ui;
const ui M=1e5+5,mod=1e9+7;
ui n,m,s,t,cnt[2],h[2][M],d[M],deg[M],inv[M],dp[M];bool v1[M],v2[M];ui L,R,q[M];
struct Edge{
ui v,nx;
}e[2][M<<1];
inline void Add(const ui&id,const ui&u,const ui&v){
e[id][++cnt[id]]=(Edge){v,h[id][u]};h[id][u]=cnt[id];
}
signed main(){
ui ans(1);
scanf("%u%u%u%u",&n,&m,&s,&t);inv[1]=1;
for(ui i=2;i<=n;++i)inv[i]=1ull*(mod-mod/i)*inv[mod%i]%mod;
while(m--){
ui u,v;scanf("%u%u",&u,&v);
Add(0,u,v);Add(1,v,u);++d[v];
}
for(ui i=2;i<=n;++i)ans=1ull*ans*d[i]%mod;
for(ui i=1;i<=n;++i)deg[i]=d[i];
q[L=R=1]=t;v1[t]=true;
while(L<=R){
ui u=q[L++];
for(ui v,E=h[0][u];E;E=e[0][E].nx)if(!v1[v=e[0][E].v]){
v1[v]=true;q[++R]=v;
}
}
q[L=R=1]=s;v2[s]=true;
while(L<=R){
ui u=q[L++];
for(ui v,E=h[1][u];E;E=e[1][E].nx)if(!v2[v=e[1][E].v]){
v2[v]=true;q[++R]=v;
}
}
for(ui i=1;i<=n;++i)if(!v1[i]||!v2[i]){
for(ui E=h[0][i];E;E=e[0][E].nx)--deg[e[0][E].v];
}
dp[t]=1;q[L=R=1]=t;
while(L<=R){
ui u=q[L++];
if(u!=t)dp[u]=1ull*dp[u]*inv[d[u]]%mod;
for(ui v,E=h[0][u];E;E=e[0][E].nx)if(v=e[0][E].v,v1[v]&&v2[v]){
dp[v]=(dp[v]+dp[u])%mod;
if(!--deg[v])q[++R]=v;
}
}
printf("%u",1ull*ans*(1+1ull*inv[d[t]]*(1+mod-dp[s])%mod)%mod);
}
LGP3244题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- SQLite 基础不扎实造成的:error code 19: constraint failed
感谢大佬:https://www.cnblogs.com/flintlovesam/p/5241866.html (https://www.cnblogs.com/flintlovesam/p/524 ...
- Java和Js编码(encodeUrl)解码(decodeUrl)对空格的差异问题
今天解决一个问题的时候遇到了一个编码解码问题,记录一下. 1. Js用的是encodeURIComponent()方法编码,后面的都以该编码方式处理出来的数据为准. 2. Java用的是URLDeco ...
- 友盟分享,极光推送Demo
友盟分享SDK下载及官方文档 http://dev.umeng.com/social/ios/detail-share 1.注册应用获取App友盟Appkey(556d14ad67e58eb08400 ...
- LAMP架构—源码编译安装 (爱情受过伤,为爱跳过鸭绿江)
LAMP架构--源码编译安装 1.LAMP架构概述 2.编译安装Apache httpd 服务 3.编译安装mysql 服务 4.编译安装PHP 解析服务 5.利用LAMP搭建论坛 1.LAMP架构概 ...
- Solution -「国家集训队」「洛谷 P2619」Tree I
\(\mathcal{Description}\) Link. 给一个 \(n\) 个点 \(m\) 条边的带权无向图,边有权值和黑白颜色,求恰选出 \(K\) 条白边构成的最小生成树. ...
- 在ABP VNext框架中处理和用户相关的多对多的关系
前面介绍了一些ABP VNext架构上的内容,随着内容的细化,我们会发现ABP VNext框架中的Entity Framework处理表之间的引用关系还是比较麻烦的,一不小心就容易出错了,本篇随笔介绍 ...
- Python "爬虫"出发前的装备之一正则表达式
1. 正则表达式 正则表达式是一种模板表达式语言 通过定义规则去匹配.查找.替换.分割一个长字符串中特定的子字符信息. 如在一篇文章中查找出所有合法的电子邮箱地址,则可以先用正则表达式定义一个电子邮箱 ...
- Ansible部署K8s集群
目录 检查网络:k8s-check.yaml 连接配置:k8s-conn-cfg.yaml 配置k8s集群dns解析: k8s-hosts-cfg.yaml 配置yum源:k8s-yum-cfg.ya ...
- DoS泛洪测试与防御
实验目的 DoS泛洪测试与防御 实验内容 DoS泛洪测试与防御 实验环境描述 1. 学生机与实验室网络直连: 2. VPC1与实验室网络直连: 3. 学生机与VPC1物理链路连通: 实验步骤 学生登录 ...
- scrapy爬取youtube游戏模块
本次使用mac进行爬虫 mac爬虫安装过程中出现诸多问题 避免日后踩坑这里先进行记录 首先要下载xcode ,所以要更新macOS到10.14.xx版本 更新完之后因为等下要进行环境路径配置 但是ma ...