题意:一个n个点m条单向边的图,每个点有权值,给定出发点和p个可以停止的点,你可以随便走一条路径从出发点走到一个可以停止的点,但是每个点的点权只能计算一次,求能得到的最大权值。

n,m<=500000

题解:tarjan缩点,然后树形dp。显然强联通分量里每一个点都可以乱走(为所欲为)

#include<cstdio>
#include<iostream>
#define INF 2000000000
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-') f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-''; ch=getchar();}
return x*f;
} bool b[],inq[];
int cnt=,n,m,cc,s[],dfn[],low[],rt,top=,dn=;
int head[],f[],q[],bel[];
struct edge{
int to,next;
}e[]; void ins(int f,int t){e[++cnt].next=head[f];head[f]=cnt;e[cnt].to=t;} void tarjan(int x)
{
dfn[x]=low[x]=++dn;q[++top]=x;inq[x]=;
for(int i=head[x];i;i=e[i].next)
if(!dfn[e[i].to]){tarjan(e[i].to);low[x]=min(low[x],low[e[i].to]);}
else {if(inq[e[i].to]) low[x]=min(low[x],dfn[e[i].to]);}
if(dfn[x]==low[x])
for(++cc;q[top+]!=x;bel[q[top]]=cc,s[cc]+=s[q[top]],b[cc]|=b[q[top]],inq[q[top--]]=);
} void dp(int x)
{
if(b[x])f[x]=s[x];else f[x]=-INF;
for(int i=head[x];i;i=e[i].next) {if(!f[e[i].to])dp(e[i].to);f[x]=max(f[x],f[e[i].to]+s[x]);}
} int main()
{
cc=n=read();m=read();
for(int i=;i<=m;i++){int u=read(),v=read();ins(u,v);}
for(int i=;i<=n;i++)s[i]=read();
rt=read();m=read();
for(int i=;i<=m;i++)b[read()]=;
for(int i=;i<=n;i++)if(!dfn[i])tarjan(i);
for(int i=;i<=n;i++)for(int j=head[i];j;j=e[j].next)
if(bel[i]!=bel[e[j].to])ins(bel[i],bel[e[j].to]);
dp(bel[rt]);
cout<<f[bel[rt]];
return ;
}

[Apio2009][bzoj1179]Atm的更多相关文章

  1. 【Apio2009】Bzoj1179 Atm

    目录 List Description Input Output Sample Input Sample Output HINT Solution Code Dfs 记忆化搜索 Position: h ...

  2. BZOJ1179 Atm //缩点+spfa

    1179: [Apio2009]Atm Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的 ...

  3. bzoj1179 Atm

    Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...

  4. [BZOJ1177][BZOJ1178][BZOJ1179]APIO2009解题报告

    抱着好奇心态去开始做APIO的往年试题感受一下难度 Oil Description 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地 ...

  5. [BZOJ1179][APIO2009][强连通分量Tarjan+spfa]ATM

    [BZOJ1179][APIO2009]ATM Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i ...

  6. BZOJ1179 [Apio2009]Atm 【tarjan缩点】

    1179: [Apio2009]Atm Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 4048  Solved: 1762 [Submit][Sta ...

  7. BZOJ1179 : [Apio2009]Atm 缩点+spfa

    1179: [Apio2009]Atm Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 2069  Solved: 826[Submit][Status ...

  8. bzoj1179 [Apio2009]Atm

    Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...

  9. 【BZOJ1179】 [Apio2009]Atm tarjan缩点+SPFA

    Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...

随机推荐

  1. java的socket通信

    本文讲解如何用java实现网络通信,是一个非常简单的例子,我比较喜欢能够立马看到结果,所以先上代码再讲解具体细节. 服务端: import java.io.BufferedReader; import ...

  2. Apache自带 ab压测工具 Windows配置使用说明 - 随笔记录

    我们先来了解一下ab工具的概念,摘自网络: ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试.比如ngin ...

  3. 调用WCF时,调用已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定。

    解决方案: 其实只要在客户端配置文件中加上如下紫色粗体属性( maxReceivedMessageSize): <?xml version="1.0" encoding=&q ...

  4. csrf学习笔记

    CSRF全称Cross Site Request Forgery,即跨站点请求伪造.我们知道,攻击时常常伴随着各种各样的请求,而攻击的发生也是由各种请求造成的. CSRF攻击能够达到的目的是使受害者发 ...

  5. H5 音频标签自定义样式修改以及添加播放控制事件

    说明: 需求要求这个音频标签首先要是可适配移动端浏览器的,音频样式就是参考微信做的. 最终效果如下: 具体实现 思路: H5 的 <audio> 标签是由浏览器负责实现默认样式的.所以不同 ...

  6. ORA-00379 缓冲池 DEFAULT 中无法提供 32K 块大小的空闲缓冲区

    (一)问题 今天在使用Pl/sql developer查看表空间大小的时候,报错误:ORA-00379 缓冲池 DEFAULT 中无法提供 32K 块大小的空闲缓冲区,具体如下图: SQL> s ...

  7. java之servlet小记

    Servlet               service+applet                   服务+小程序 Java是语言,像c\c#等一样,是一门计算机语言,servlet是java ...

  8. gradle入门(1-4)多项目构建实战

    一.多项目构建 1.多项目构建概念 尽管我们可以仅使用单个组件来创建可工作的应用程序,但有时候更广泛的做法是将应用程序划分为多个更小的模块. 因为这是一个非常普遍的需求,因此每个成熟的构建工具都必须支 ...

  9. Homebrew update error not work on OSX

    brew update 错误是这样的 chown: /usr/local: Operation not permitted 然后网上osx 10.11, 10.12的解决方法这样的 The probl ...

  10. JSON(五)——同步请求中使用JSON格式字符串进行交互(不太常见的用法)

    在同步请求中使用JSON格式进行数据交互的场景并不多,同步请求是浏览器直接与服务器进行数据交互的大多是用jsp的标签jstl和el表达式对请求中的数据进行数据的渲染.我也是在一次开发中要从其它服务器提 ...