转化补集的思想,首先求出任意两点之间路径数目

然后求两条路径第一次相交在点k(按照拓扑排序的顺序)的数目,显然这里要用到容斥

然后pascal有坑爹的范围检测,所以运算中有些不会影响到答案但会爆int64的地方要判断一下

 const inf=1e18;
var w:array[..,..] of boolean;
f:array[..,..] of int64;
g:array[..] of int64;
q,rd:array[..] of longint;
a,b,c,d,n,m,x,y,i,j,k,h,t:longint;
ans:int64; begin
readln(n,m);
for i:= to m do
begin
readln(x,y);
w[x,y]:=true;
inc(rd[y]);
end;
for i:= to n do
if rd[i]= then
begin
inc(t);
q[t]:=i;
end;
h:=;
while h<=t do
begin
x:=q[h];
for i:= to n do
if w[x,i] then
begin
dec(rd[i]);
if rd[i]= then
begin
inc(t);
q[t]:=i;
end;
end; inc(h);
end;
readln(a,b,c,d);
for i:= to n do
for j:=i to n do
if q[i]=q[j] then f[q[i],q[j]]:=
else begin
for k:=i to j- do
if w[q[k],q[j]] then
if f[q[i],q[j]]+f[q[i],q[k]]<inf then f[q[i],q[j]]:=f[q[i],q[j]]+f[q[i],q[k]];
end; for i:= to n do
begin
if (f[q[i],b]<>) and (f[q[i],d]<>) then
begin
g[q[i]]:=f[a,q[i]]*f[c,q[i]];
for j:= to i- do
g[q[i]]:=g[q[i]]-g[q[j]]*f[q[j],q[i]]*f[q[j],q[i]];
end;
end;
for i:= to n do
ans:=ans-g[i]*f[i,b]*f[i,d];
ans:=ans+f[a,b]*f[c,d];
writeln(ans);
end.

bzoj1471的更多相关文章

  1. 不相交路径[BZOJ1471] 容斥原理 拓扑排序

    最近学容斥的时候又碰到一道类似的题目,所以想分享一个套路,拿这题来举例 [题目描述] 给出一个\(N(N\leq 150)\)个结点的有向无环简单图.给出4个不同的点\(a,b,c,d\),定义不相交 ...

  2. 【BZOJ1471】不相交路径 题解(拓扑排序+动态规划+容斥原理)

    题目描述 在有向无环图上给你两个起点和终点分别为$a,b,c,d$.问有几种路径方案使得能从$a$走到$b$的同时能从$c$走到$d$,且两个路径没有交点. $1\leq n\leq 200,1\le ...

随机推荐

  1. ubuntu server版连接vpn服务器

    命令行的方法: 1.要下载pptp的客户端    sudo apt-get install pptp-linux 2.创建连接     sudo pptpsetup –create vpn001 –s ...

  2. Spark Streaming揭秘 Day33 checkpoint的使用

    Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...

  3. 解决Win7系统安装时“安装程序无法定位现有 系统分区,也无法创建新的系统分区”提示

    第一步:U盘启动装系统时,格式化主分区的内容后出现上面的问题 第二步:重启机器,通过U 盘启动.进入win pe系统. 第三步:把windows 7的ISO镜像解压到电脑的非系统盘的其他硬盘上.如D: ...

  4. 辛星Spring4.x教程开放下载了

    下载地址:  https://pan.baidu.com/s/1kVSAYeb

  5. JavaScript技巧45招

    原文:45 Useful JavaScript Tips, Tricks and Best Practices作者:Saad Mousliki 在这篇文章里,我将分享一些JavaScript的技巧.秘 ...

  6. Swift与Objective-C的对比

    WWDC 2014上苹果再次惊世骇俗的推出了新的编程语言Swift 雨燕, 这个消息会前没有半点风声的走漏.消息发布当时,会场一片惊呼,相信全球看直播的码农们当时也感觉脑袋被敲了一记闷棍吧.于是熬夜学 ...

  7. C#基础及记忆概念

    在C#中,你给一个方法传输值类型参数时,实际上是使用的这个参数的一个副本,就是将原来的变量复制一份,然后传给一个方法,让其进行操作.所以在方法内部对参数的修改等不会对原来的参数造成影响(这个其实就是值 ...

  8. iOS 10 的适配问题-b

    随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使 ...

  9. 理解UIEdgeInsets

    供参考 iOS 的控件,只看到 UIButton 可以设置 Padding/Insets,即按钮上文字或图片与按钮边界的间隙. CSS 上叫做 Padding,在 iOS 中叫做 Insets,UIB ...

  10. 使用Yeoman搭建 AngularJS 应用 (7) —— 让我们搭建一个网页应用

    原文地址:http://yeoman.io/codelab/preview-inbrowser.html 开启你的服务 运行Grunt任务,通过输入下面的命令来创建一个本地Node的http服务,地址 ...