【强连通分量+spfa】Bzoj1179 Apio2009 Atm
Description

Solution
显然缩强连通分量,然后求最长路,虽然是DAG但还是有点麻烦,于是用了spfa。
Code
重建图_数组写错好多次,感觉做这题也就是练了一下实现。
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=5e+; int pre[maxn],low[maxn],clock;
int scc[maxn],val[maxn],cnt,a[maxn],t;
int head[maxn],f[maxn],e[maxn],nxt[maxn],k;
int adde(int u,int v){
f[++k]=u,e[k]=v;
nxt[k]=head[u],head[u]=k;
}
int n,m,s,p;
int w[maxn],ok[maxn]; int dfs(int u){
//printf("%d\n",u);
pre[u]=low[u]=++clock;
a[++t]=u;
for(int i=head[u];i;i=nxt[i]){
int v=e[i];
if(!pre[v]){
dfs(v);
low[u]=min(low[u],low[v]);
}
else if(!scc[v]){
low[u]=min(low[u],pre[v]);
}
}
if(low[u]==pre[u]){
++cnt;
while(t){
scc[a[t]]=cnt;
val[cnt]+=w[a[t]];
if(a[t--]==u) break;
}
}
} int ok_[maxn];
int head_[maxn],e_[maxn],nxt_[maxn],k_;
int adde_(int u,int v){
e_[++k_]=v;
nxt_[k_]=head_[u],head_[u]=k_;
} int rebuild(){
for(int i=;i<=k;i++){
int u=scc[f[i]],v=scc[e[i]];
if(u!=v) adde_(u,v);
}
for(int i=;i<=n;i++)
if(ok[i]) ok_[scc[i]]=;
} int q[maxn],d[maxn],inque[maxn],ans,h;
int spfa(){
t=;
s=scc[s];
q[++t]=s;
inque[s]=;
d[s]=val[s];
ans=d[s];
while(h<t){
int u=q[++h];
//printf("%d\n",u);
for(int i=head_[u];i;i=nxt_[i]){
int v=e_[i];
if(d[u]+val[v]>d[v]){
//printf(" %d\n",v);
d[v]=d[u]+val[v];
if(ok_[v]) ans=max(ans,d[v]);
if(!inque[v]) inque[v]=,q[++t]=v;
}
}
inque[u]=;
}
} int main(){
scanf("%d%d",&n,&m);
int u,v,x;
for(int i=;i<=m;i++){
scanf("%d%d",&u,&v);
adde(u,v);
}
for(int i=;i<=n;i++)
scanf("%d",&w[i]);
scanf("%d%d",&s,&p);
for(int i=;i<=p;i++)
scanf("%d",&x),ok[x]=; for(int i=;i<=n;i++)
if(!pre[i]) dfs(i); rebuild();
spfa();
printf("%d\n",ans);
return ;
}
【强连通分量+spfa】Bzoj1179 Apio2009 Atm的更多相关文章
- bzoj1179: [Apio2009]Atm 【缩点+spfa最长路】
		题目传送门 Description Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruser i 银行的 ATM 取款机.令人奇怪的是,S ... 
- BZOJ1179 [Apio2009]Atm Tarjan 强连通缩点 动态规划
		欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1179 题意概括 有一个有向图,每一个节点有一个权值,其中有一些结束点. 现在,你要从S出发,到达任 ... 
- BZOJ1179 : [Apio2009]Atm 缩点+spfa
		1179: [Apio2009]Atm Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 2069 Solved: 826[Submit][Status ... 
- 【Tarjan】+【SPFA】APIO2009 Atm
		一.算法介绍 tarjan——求解有向图强连通分量.这个算法在本人的一篇blog中有介绍,这里就不赘述了.贴上介绍tarjan的的blog链接:http://www.cnblogs.com/Maki- ... 
- BZOJ1179 [Apio2009]Atm   【tarjan缩点】
		1179: [Apio2009]Atm Time Limit: 15 Sec Memory Limit: 162 MB Submit: 4048 Solved: 1762 [Submit][Sta ... 
- 【强联通分量缩点】【最短路】【spfa】bzoj1179 [Apio2009]Atm
		缩点后转化成 DAG图上的单源最长路问题.spfa/dp随便. #include<cstdio> #include<queue> #include<algorithm&g ... 
- [BZOJ1179] [Apio2009]Atm(tarjan缩点 + spfa)
		传送门 题意 N个点M条边的有向图 每个点有点权 从某一个结点出发 问能获得的最大点权和 一个点的点权最多被计算一次 N<=500000 M<=500000 思路 先tarjan缩点,然后 ... 
- bzoj1179 [Apio2009]Atm
		Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口 ... 
- bzoj1179: [Apio2009]Atm scc缩点+dag上dp
		先把强连通缩点,然后变成了dag,dp求终点是酒吧的最长路即可, /************************************************************** Pro ... 
随机推荐
- svn 不能添加.a文件
			1.打开终端输入 open ~/.subversion/ 2.双击打开config文件 3.修改如下两行 # global-ignores = *.o *.lo *.la *.al .libs ... 
- angularjs作用域之transclude
			transclude是一个可选的参数.如果设置了,其值必须为true,它的默认值是false.嵌入有时被认为是一个高级主题,但某些情况下它与我们刚刚学习过的作用域之间会有非常好的配合.使用嵌入也会很好 ... 
- edit distance(编辑距离,两个字符串之间相似性的问题)
			Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ... 
- Django升级1.8的一些问题
			1.最明显的问题当然是Settings设置中关于模板的设置数据结构发生变化,这个就不细说了,你开个Django的1.8的新项目就知道怎么改了 2.migrations问题,这个问题是1.8最主要的修改 ... 
- YOLO_Online 将深度学习最火的目标检测做成在线服务实战经验分享
			YOLO_Online 将深度学习最火的目标检测做成在线服务 第一次接触 YOLO 这个目标检测项目的时候,我就在想,怎么样能够封装一下让普通人也能够体验深度学习最火的目标检测项目,不需要关注技术细节 ... 
- [ASP.NET MVC]  Controlle中的Aciton方法数据接收方式
			POST数据接收方式包括: 1.request.Form:(逐个获取表单提交的数据); FormCollection: [HttpPost]public async Task<string> ... 
- Python 内置的一些高效率函数用法
			1. filter(function,sequence) 将sequence中的每个元素,依次传进function函数(可以自定义,返回的结果是True或者False)筛选,返回符合条件的元素,重组 ... 
- 想做微信小程序第三方代理,各位觉得一键生成平台能赚到钱吗?
			这几年生意不景气,这是很多人的共识.从2009年开始,各种专家就判断"明年经济是最差的一年."然后,这个明年,一直"明"到了2018年,到最后,我们发现,经济就 ... 
- EF Core Model更新迁移
			EF Core 迁移 感觉就是以前EF Code First的自动同步数据库功能 内容:在你新增.更新TableModel后,如何自动化的更新DB中的真实Table.以及对这些更改进行一个版本控制. ... 
- struts升级2.3.12到2.5.13
			参考文章: http://www.ituring.com.cn/article/495914 http://blog.csdn.net/zhangchen1987/article/details/78 ... 
