BZOJ_1179_[Apio2009]Atm_tarjan+spfa
BZOJ_1179_[Apio2009]Atm_tarjan+spfa
题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1179
分析:
显然有环没法直接最长路,那就缩个点再跑。
酒吧连汇点。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 500050
int head[N],to[N<<1],nxt[N<<1],val[N],can[N],cancan[N];
int n,m,bel[N],dfn[N],low[N],st[N],top,scc,tot,cnt,S,T;
int ins[N],sum[N],X[N],Y[N],Q[N],l,r,dis[N],inq[N];
inline void add(int u,int v){
to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;
}
void tarjan(int x){
st[top++]=x;ins[x]=1;dfn[x]=low[x]=++tot;
for(int i=head[x];i;i=nxt[i]){
if(!dfn[to[i]]){
tarjan(to[i]);
low[x]=min(low[x],low[to[i]]);
}else if(ins[to[i]])low[x]=min(low[x],dfn[to[i]]);
}
if(dfn[x]==low[x]){
int t=st[--top];ins[t]=0;
bel[t]=++scc;
sum[scc]+=val[t];
cancan[scc]|=can[t];
while(t!=x){
t=st[--top];ins[t]=0;
bel[t]=scc;
sum[scc]+=val[t];
cancan[scc]|=can[t];
}
}
}
int main(){
scanf("%d%d",&n,&m);
int x,y;
for(int i=1;i<=m;i++){
scanf("%d%d",&x,&y);
add(x,y);
X[i]=x,Y[i]=y;
}
for(int i=1;i<=n;i++){
scanf("%d",&val[i]);
}
scanf("%d%d",&S,&x);
T=n+1;
for(int i=1;i<=x;i++){
scanf("%d",&y);
can[y]=1;
}
for(int i=1;i<=n;i++){
if(!dfn[i])tarjan(i);
}
memset(head,0,sizeof(head));cnt=0;
for(int i=1;i<=m;i++){
if(bel[X[i]]!=bel[Y[i]])add(bel[X[i]],bel[Y[i]]);
}
for(int i=1;i<=scc;i++)if(cancan[i])add(i,T);
S=bel[S];
Q[r++]=S;inq[S]=1;dis[S]=sum[S];
while(l^r){
int x=Q[l++];inq[x]=0;if(l==n+10)l=0;
for(int i=head[x];i;i=nxt[i]){
if(dis[to[i]]<dis[x]+sum[to[i]]){
dis[to[i]]=dis[x]+sum[to[i]];
if(!inq[to[i]]){
inq[to[i]]=1;Q[r++]=to[i];if(r==n+10)r=0;
}
}
}
}
printf("%d",dis[T]);
}
BZOJ_1179_[Apio2009]Atm_tarjan+spfa的更多相关文章
- 【Tarjan】+【SPFA】APIO2009 Atm
一.算法介绍 tarjan——求解有向图强连通分量.这个算法在本人的一篇blog中有介绍,这里就不赘述了.贴上介绍tarjan的的blog链接:http://www.cnblogs.com/Maki- ...
- 缩点+spfa最长路【bzoj】 1179: [Apio2009]Atm
[bzoj] 1179: [Apio2009]Atm Description Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruseri ...
- [BZOJ1179][APIO2009][强连通分量Tarjan+spfa]ATM
[BZOJ1179][APIO2009]ATM Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i ...
- BZOJ1179 : [Apio2009]Atm 缩点+spfa
1179: [Apio2009]Atm Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 2069 Solved: 826[Submit][Status ...
- [APIO2009]抢掠计划(Tarjan,SPFA)
[APIO2009]抢掠计划 题目描述 Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruseri 银行的 ATM 取款机.令人奇怪的是, ...
- bzoj 1179[Apio2009]Atm (tarjan+spfa)
题目 输入 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口编号.接下来N行,每行一 ...
- 【BZOJ1179】 [Apio2009]Atm tarjan缩点+SPFA
Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ...
- 【BZOJ】1179: [Apio2009]Atm(tarjan+spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=1179 缩点建图... #include <cstdio> #include <cs ...
- 【强连通分量+spfa】Bzoj1179 Apio2009 Atm
Description Solution 显然缩强连通分量,然后求最长路,虽然是DAG但还是有点麻烦,于是用了spfa. Code 重建图_数组写错好多次,感觉做这题也就是练了一下实现. #inclu ...
随机推荐
- CSS 弹性容器
该文章为英文原文译文及一些自己的拙见墙裂推荐读原文浏览原文请戳这里 : CSS-STRICKS 弹性布局 (Flexbox Layout) 什么是弹性布局 Flexbox Layout 模块旨在提供一 ...
- AngularJS数据绑定中数据监控的机制说明
from : http://docs.angularjs.org/guide/scope When the browser calls into JavaScript the code execute ...
- C++神奇算法库——#include<algorithm>
算法(Algorithm)为一个计算的具体步骤,常用于计算.数据处理和自动推理.C++ 算法库(Algorithms library)为 C++ 程序提供了大量可以用来对容器及其它序列进行算法操作的函 ...
- DDGScreenShot--iOS 图片裁剪,切圆角,加边框,你还用cornerRadius,还有更高级的用法
写在前面 我们肯定做过这样的需求,给一个图片切圆角, 当然我们大多采用简单粗暴的方法 myIcon.layer.cornerRadius = 16.5 myIcon.layer.masksToBoun ...
- SSRS 数据源访问Cube 无法创建订阅的解决方法
SSRS Report 的数据源可以直接放问SSAS 的Cube. 当报表的数据源设置成下图: 这样设置后,report 能够正常访问 Cube 并打开Report. 但是,如果我们需要添加数据驱动的 ...
- Unity5 打assetbundle时,无法打成图集仍然是散图的原因
首先需要把 SpritePacker设置成可用 菜单Edit->project setting->editor 修改为可用 然后,保证所有图片的导入格式如下 最主要是 packi ...
- Linux(Redhat)安装Redis
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.(百度百科 0.0) 下载:http://www.redis. ...
- c# 事件和EventManager
事件 基本用法 关键字event,声明格式为: public event <委托类型> <事件对象> 事件的处理方法:适用于该委托的方法 数据的触发: 绑定同类事件,绑定时,可 ...
- git-------基础(一)
更改连接仓库只用操作一次(先删后加) (1)git remote rm origin //若本地已经关联了一个远程库,则先删除已关联的 ...
- 5月第2周业务风控关注 | 央行:严禁未经授权认可的APP接入征信系统
本文由 网易云发布. 易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.央行 ...