bzoj1093
首先缩点
然后半连通其实就是缩点后节点数最多的链
注意这里一定是一条链才一定是半连通
然后重建图拓扑排序上做dp即可
type node=record
po,next:longint;
end; var w,e:array[..] of node;
rd,be,c,f,g,p,q,st,dfn,low:array[..] of longint;
v:array[..] of boolean;
s,mo,i,n,m,x,y,j,h,t,ans1,ans2,len:longint; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; procedure fadd(x,y:longint);
begin
inc(len);
w[len].po:=y;
w[len].next:=q[x];
q[x]:=len;
end; procedure add(x,y:longint);
begin
inc(len);
e[len].po:=y;
e[len].next:=p[x];
p[x]:=len;
end; procedure tarjan(x:longint);
var i,y:longint;
begin
inc(h);
dfn[x]:=h;
low[x]:=h;
inc(t);
st[t]:=x;
v[x]:=true;
i:=p[x];
while i<> do
begin
y:=e[i].po;
if dfn[y]= then
begin
tarjan(y);
low[x]:=min(low[x],low[y]);
end
else if v[y] then low[x]:=min(low[x],low[y]);
i:=e[i].next;
end;
if dfn[x]=low[x] then
begin
inc(s);
while st[t+]<>x do
begin
y:=st[t];
v[y]:=false;
inc(c[s]);
be[y]:=s;
dec(t);
end;
end;
end; begin
readln(n,m,mo);
for i:= to m do
begin
readln(x,y);
add(x,y);
end;
for i:= to n do
if dfn[i]= then
begin
h:=;
t:=;
tarjan(i);
end; len:=;
for i:= to n do
begin
j:=p[i];
while j<> do
begin
y:=e[j].po;
if be[y]<>be[i] then
begin
fadd(be[i],be[y]);
inc(rd[be[y]]);
end;
j:=e[j].next;
end;
end;
t:=;
for i:= to s do
if rd[i]= then
begin
inc(t);
st[t]:=i;
f[i]:=c[i];
g[i]:=;
end;
h:=;
fillchar(low,sizeof(low),);
while h<=t do
begin
x:=st[h];
i:=q[x];
while i<> do
begin
y:=w[i].po;
dec(rd[y]);
if rd[y]= then
begin
inc(t);
st[t]:=y;
end;
if low[y]<>x then
begin
low[y]:=x;
if f[y]<f[x]+c[y] then
begin
f[y]:=f[x]+c[y];
g[y]:=g[x];
end
else if f[y]=f[x]+c[y] then g[y]:=(g[y]+g[x]) mod mo;
end;
i:=w[i].next;
end;
inc(h);
end;
ans1:=;
ans2:=;
for i:= to s do
if f[i]>ans1 then
begin
ans1:=f[i];
ans2:=g[i];
end
else if f[i]=ans1 then ans2:=(ans2+g[i]) mod mo;
writeln(ans1);
writeln(ans2);
end.
bzoj1093的更多相关文章
- BZOJ1093 ZJOI2007最大半连通子图(缩点+dp)
发现所谓半连通子图就是缩点后的一条链之后就是个模板题了.注意缩点后的重边.写了1h+真是没什么救了. #include<iostream> #include<cstdio> # ...
- 【BZOJ1093】[ZJOI2007]最大半联通子图(Tarjan,动态规划)
[BZOJ1093][ZJOI2007]最大半联通子图(Tarjan,动态规划) 题面 BZOJ 洛谷 洛谷的讨论里面有一个好看得多的题面 题解 显然强连通分量对于题目是没有任何影响的,直接缩点就好了 ...
- LG2272/BZOJ1093 「ZJOI2007」最大半连通子图 Tarjan缩点+DAG求最长链
问题描述 LG2272 BZOJ1093 题解 观察半联通的定义,发现图中的一些结点,构成的链一定是一个半联通子图. 此时存在的环可能会干扰求解,于是\(\mathrm{Tarjan}\)缩点. 于是 ...
- BZOJ1093 [ZJOI2007]最大半连通子图
Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u ...
- BZOJ1093 最大半连通子图
Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意 两点u,v,存在一条u到v的有向路径或者从v到 ...
- BZOJ1093或洛谷2272 [ZJOI2007]最大半连通子图
BZOJ原题链接 洛谷原题链接 和 Going from u to v or from v to u?(题解)这道题类似,只不过是求最大子图的大小和个数而已. 一样用\(tarjan\)求强连通分量, ...
- 2018.11.06 bzoj1093: [ZJOI2007]最大半连通子图(缩点+拓扑排序)
传送门 先将原图缩点,缩掉之后的点权就是连通块大小. 然后用拓扑排序统计最长链数就行了. 自己yyyyyy了一下一个好一点的统计方法. 把所有缩了之后的点都连向一个虚点. 然后再跑拓扑,这样最后虚点的 ...
- BZOJ1093 [SCOI2003]字符串折叠
Description 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠.记作S S 2. X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) SSSS…S(X个S). ...
- bzoj1093[ZJOI2007]最大半连通子图(tarjan+拓扑排序+dp)
Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u ...
随机推荐
- win向linux传文件
使用pscp.exe即可. 下载pscp.exe(http://pan.baidu.com/s/1jG6zmx4) 复制到windows/system32目录下即可. 然后可在cmd命令行下使用psc ...
- Windows 7中,用Visual Studio开发WPF应用程序,实现从Windows Explorer中拖拽文件到应用程序,始终显示“无法拖放”符号问题解决方案
Are you running your application or Visual Studio that hosts the app under administrative privilege? ...
- oc文件基本读写及操作
代码: #import <Foundation/Foundation.h> //NSString 写文件 void stringWriteToFile(){ NSString *path ...
- C#基础总复习03
继续更新...接下来就是面向对象的知识了 1.面向对象:概念:使用面向对象的思想进行编程可以让的程序变得扩展性更高,便于维护: 我们在现实生活中去描述一个人的时候,通过描述这个人的特征和行为. 我们在 ...
- 执行mysql脚本
方法1: mysql -uroot -p123456 -Ddatabasename < sql文件路径 方法2: source 路径全名 \. 路径全名
- ASP.NET中的特殊路径标识"~"
/ 表示网站根目录(从域名开始), ../ 表示上级目录, ./表示当前目录- 是ASP.NET定义的特殊符号,是ASP.NET内部进行定义推荐的用法,-代表从应用根目录开始定义应用根目录与网站根目录 ...
- React组件二
<script type="text/babel"> <!-- this.props.children表示读取组件的所有子节点-->var Zu=React ...
- javascript 老王开车去东北
[Decode error - output not utf-8] 魔女 飞 奔驰 去 华南 [Finished in 1.1s] 需要变化的对象进行隔离.正是编程的乐趣之处 /** * by Jac ...
- overflow:hidden真的失效了吗
项目中常常有同学遇到这样的问题,现象是给元素设置了overflow:hidden,但超出容器的部分并没有被隐藏,难道是设置的hidden失效了吗? 其实看似不合理的现象背后都会有其合理的解释. 我们知 ...
- CakePHP采用model的save方法更新数据所需查询
采用model的save方法更新数据所需查询 1. 验证时候要确认是update 或者 create,以便使用对应规则 public $validate = array( 'field_name' = ...