bzoj1179
这种tarjan+dp的水题我竟然还WA了两次,要小心!
type link=^node;
node=record
po:longint;
next:link;
end; var rd,be,st,v,a,dp,dfn,low:array[..] of longint;
f,b,bar:array[..] of boolean;
edge,way:array[..] of link;
h,t,i,n,m,beg,bs,s,x,y:longint;
p:link; procedure add(y:longint;var q:link);
var p:link;
begin
new(p);
p^.po:=y;
p^.next:=q;
q:=p;
end; function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; procedure tarjan(x:longint);
var y:longint;
p:link; begin
inc(h);
inc(t);
st[t]:=x;
dfn[x]:=h;
low[x]:=h;
f[x]:=true;
p:=way[x];
while p<>nil do
begin
y:=p^.po;
if dfn[y]= then
begin
tarjan(y);
low[x]:=min(low[x],low[y]);
end
else if f[y] then low[x]:=min(low[x],low[y]);
p:=p^.next;
end;
if dfn[x]=low[x] then
begin
inc(s);
while st[t+]<>x do
begin
y:=st[t];
f[y]:=false;
be[y]:=s;
v[s]:=v[s]+a[y];
dec(t);
end;
end;
end; begin
readln(n,m);
for i:= to m do
begin
readln(x,y);
add(y,way[x]);
end;
for i:= to n do
readln(a[i]); readln(beg,bs);
for i:= to bs do
begin
read(x);
b[x]:=true;
end; for i:= to n do
if dfn[i]= then
begin
h:=;
t:=;
tarjan(i);
end; for i:= to n do
begin
p:=way[i];
while p<>nil do
begin
y:=p^.po;
if be[i]<>be[y] then
begin
add(be[i],edge[be[y]]);
inc(rd[be[i]]);
end;
p:=p^.next;
end;
if b[i] then bar[be[i]]:=true;
end; t:=;
for i:= to s do
if rd[i]= then
begin
inc(t);
st[t]:=i;
end; h:=;
while h<=t do
begin
x:=st[h];
dp[x]:=max(dp[x],v[x]);
p:=edge[x];
while p<>nil do
begin
y:=p^.po;
if bar[x] then
begin
dp[y]:=max(dp[y],dp[x]+v[y]);
bar[y]:=true;
end;
dec(rd[y]);
if rd[y]= then
begin
inc(t);
st[t]:=y;
end;
p:=p^.next;
end;
inc(h);
end;
writeln(dp[be[beg]]);
end.
bzoj1179的更多相关文章
- 【bzoj1179】 Apio2009—Atm
www.lydsy.com/JudgeOnline/problem.php?id=1179 (题目链接) 题意 给出一张有向图,每个节点有点权.标记一些点,找出一条路径,可以重复经过一条边,使得总点权 ...
- BZOJ1179 [Apio2009]Atm Tarjan 强连通缩点 动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1179 题意概括 有一个有向图,每一个节点有一个权值,其中有一些结束点. 现在,你要从S出发,到达任 ...
- [BZOJ1177][BZOJ1178][BZOJ1179]APIO2009解题报告
抱着好奇心态去开始做APIO的往年试题感受一下难度 Oil Description 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地 ...
- [BZOJ1179][APIO2009][强连通分量Tarjan+spfa]ATM
[BZOJ1179][APIO2009]ATM Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i ...
- bzoj1179(Atm)
---恢复内容开始--- 1179: [Apio2009]Atm Time Limit: 15 Sec Memory Limit: 162 MB Description Input 第一行包含两个整 ...
- BZOJ1179 Atm //缩点+spfa
1179: [Apio2009]Atm Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的 ...
- 【BZOJ-1179】Atm Tarjan + SPFA
1179: [Apio2009]Atm Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 2407 Solved: 993[Submit][Status ...
- bzoj1179 [Apio2009]Atm
Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...
- 【BZOJ1179】 [Apio2009]Atm tarjan缩点+SPFA
Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...
随机推荐
- c语言学习之基础知识点介绍(十七):写入读取结构体、数组、结构体数组
一.结构体的写入和读取 //写入结构体 FILE *fp = fopen("/Users/ios/Desktop/1.data", "w"); if (fp) ...
- Jquery基础整理
1.简单的JQuery (1) $(document).ready(function(){ $(document).ready(mydays); alert(“加载完毕,请检查!”); functi ...
- CSS常见选择器
一.元素选择器 p,html,h1, h2 1.多个元素一起设置同一种风格, 则用逗号“,”隔开(选择器分组) 2.通配符选择, *{Color:red} 表示文档中所有元素都为红色 二.类选择器 ...
- SqlServer Alter Table 语句的用法
更改 字段的数据类型 Alter Table TB_ITM_ITEM alter column is_timing int NULL; 新增字段: alter table WeiboSmartCate ...
- Bzoj 3831 [Poi2014]Little Bird
3831: [Poi2014]Little Bird Time Limit: 20 Sec Memory Limit: 128 MB Submit: 310 Solved: 186 [Submit][ ...
- windows phone 扫描二维码
在网上找了找扫描二维码的例子,利用ZXing库实现(下载),提供的Silverlight版本的下载,在网上搜了一下已经有wp的dll可用了,不过网上实现的条码扫描的例子还都是用的Silverlight ...
- shell sort
sort is awesome! 22 hpp_national:talk:recentAtUsers-64490 23 hpp_national:talk:site_online_users:178 ...
- OpenCV2学习笔记01:Linux下OpenCV开发环境的搭建
个人已经厌倦了Windows下的开发方式,于是决定转到Linux平台上来,当然我也知道这个转变会很艰辛,但是我还是要坚持.所以,后面的所有开发我都会基于Linux和Qt,先从开发环境的搭建开始做起,当 ...
- eval(phpcode) 字符当代码执行
eval(phpcode)eval() 函数把字符串按照 PHP 代码来计算.相当于在字符串两边分别加上PHP语 法标签 该字符串必须是合法的 PHP 代码,且必须以分号结尾. 如果没有在代码字符串中 ...
- c#NPOI导出
按行列导出数据: HSSFWorkbook hssfworkbook = new HSSFWorkbook(); //命名空间:using NPOI.HSSF.UserModel; Sheet she ...