Description

Input

第一行包含两个整数N、M。N表示路口的个数,M表示道路条数。接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口编号。接下来N行,每行一个整数,按顺序表示每个路口处的ATM机中的钱数。接下来一行包含两个整数S、P,S表示市中心的编号,也就是出发的路口。P表示酒吧数目。接下来的一行中有P个整数,表示P个有酒吧的路口的编号

Output

输出一个整数,表示Banditji从市中心开始到某个酒吧结束所能抢劫的最多的现金总数。

Sample Input

6 7
1 2
2 3
3 5
2 4
4 1
2 6
6 5
10
12
8
16
1 5
1 4
4
3
5
6

Sample Output

47

HINT

50%的输入保证N, M<=3000。所有的输入保证N, M<=500000。每个ATM机中可取的钱数为一个非负整数且不超过4000。输入数据保证你可以从市中心沿着Siruseri的单向的道路到达其中的至少一个酒吧。

缩点+spfa最大路

//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<set>
using namespace std;
const int maxn=5e5+10,INF=2e9+5;
int n,m,S,v[maxn],ans;
set<int> G;
set<int>::iterator it;int aa;char cc;
int read() {aa=0;cc=getchar();while(cc<'0'||cc>'9') cc=getchar();while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();return aa;
}int fir[maxn],nxt[maxn],to[maxn],e=0;
void add(int x,int y) {to[++e]=y;nxt[e]=fir[x];fir[x]=e;
}int id[maxn],top[maxn],zz[maxn],d=0,tf=0;
int xd[maxn],sum[maxn],tot;
bool vis[maxn],inz[maxn];
void tj(int pos) {id[pos]=top[pos]=++d;zz[++tf]=pos;vis[pos]=inz[pos]=1;for(int y=fir[pos];y;y=nxt[y]) {if(vis[to[y]]) {if(inz[to[y]]) top[pos]=min(top[pos],top[to[y]]);continue;}tj(to[y]);top[pos]=min(top[pos],top[to[y]]);}if(top[pos]==id[pos]) {sum[++tot]=0;while(tf) {sum[tot]+=v[zz[tf]];xd[zz[tf]]=tot;inz[zz[tf]]=0;tf--;if(zz[tf+1]==pos) break;}}
}int ff[maxn],nn[maxn],tt[maxn],ee=0;
void bld(int x,int y) {tt[++ee]=y;nn[ee]=ff[x];ff[x]=ee;
}int dis[maxn];
void spfa(int st) {memset(zz,0,sizeof(zz));memset(vis,0,sizeof(vis));int s=1,t=0,x,y,z;zz[++t]=st;vis[st]=1;memcpy(dis,sum,sizeof(sum));while(s<=t) {x=zz[s%maxn];for(y=ff[x];y;y=nn[y]) {z=tt[y];if(dis[z]>=dis[x]+sum[z]) continue;dis[z]=dis[x]+sum[z];if(!vis[z]) {vis[z]=1;t++;zz[t%maxn]=z;}}s++;vis[x]=0;}
}int main() {n=read();m=read(); int x,y;for(int i=1;i<=m;++i) {x=read();y=read();add(x,y);}for(int i=1;i<=n;++i) v[i]=read();S=read();x=read();for(int i=1;i<=x;++i) {y=read();G.insert(y);}tj(S);for(int i=1;i<=n;++i) for(int y=fir[i];y;y=nxt[y]) if(xd[i]!=xd[to[y]]) bld(xd[i],xd[to[y]]);spfa(xd[S]);for(it=G.begin();it!=G.end();++it) {x=xd[*it];ans=max(ans,dis[x]);}printf("%d",ans);return 0;
}

  

转载于:https://www.cnblogs.com/Serene-shixinyi/p/7511225.html

bzoj1179 Atm相关推荐

  1. BZOJ1179 Atm //缩点+spfa

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

  2. bzoj1179[Apio2009]Atm

    bzoj1179[Apio2009]Atm 题意: 给个有向图,每个点有个点权,有些点有酒吧.现在求一个人从任意一点出发获得点权的最大和.要求每个点的点权只能获得一次,且路径最后必须在酒吧结束,可以重 ...

  3. 【bzoj1179】 Apio2009—Atm

    www.lydsy.com/JudgeOnline/problem.php?id=1179 (题目链接) 题意 给出一张有向图,每个节点有点权.标记一些点,找出一条路径,可以重复经过一条边,使得总点权 ...

  4. 【强连通分量·Tarjan】bzoj1179: [Apio2009]Atm

    新博的第一发! 因为这几天切了几道强连通分量,所以从这里begin [题目描述] Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个Siruseri ...

  5. 【BZOJ1179】[Apio2009]Atm/抢掠计划

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

  6. BZOJ1179【APOI2009】ATM Tarjan

    ATM Time Limit: 15 Sec Memory Limit: 162 MB Description Siruseri城中的道路都是单向的.不同的道路由路口连接.按照法律规定,在每个路口都设 ...

  7. 【BZOJ1179】atm,tarjan缩点+最长路径

    Time:2016.05.21 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 题目中是一个带点权的有向图,如果这是一个没有环的图那么问题就很简单,拓扑或者直接求最长(短)路径什么的 ...

  8. Python学习day5作业-ATM和购物商城

    Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆, ...

  9. Python ATM

    # ATM 模拟实现# 功能:# 输入对应的数字进入不同的功能:# 1. 支持进入商城购物,并通过信用卡结账.# 2. 支持信用卡余额查询.# 3. 支持不同用户之间的转账.# 4. 支持账单还款(充 ...

最新文章

  1. 网络编程--connect()、listen()、accept()
  2. Python 实现一个全面的单链表
  3. javaScript中常见的几种报错类型
  4. wincc 关闭弹出窗口C语言,退出WINCC操作画面时弹出对话框要求输入用户名和密码-工业支持中心-西门子中国...
  5. 占用较多堆外内存的区域
  6. qt5.9.0调试如何查看变量的值_深入了解 Java 调试
  7. 天正多条线段长度lisp下载_预习丨人教版六年级数学(上册)全册知识要点梳理,可下载...
  8. 软件项目测试报价单,某软件项目报价单
  9. YDOOK:VSC VisioStudio Code 设置 鼠标滚轮缩放字体大小 滚轮控制字体放大缩小
  10. 项目管理人员达到最高层所需的八大能力
  11. 树莓派笔记004——步进电机驱动板
  12. 人人商城h5无法登录
  13. nginx.conf中的fastcgi_pass
  14. php8网站,教你从零搭建php8环境
  15. ReactNative出现诸如以上的错误; ** is not defined.都是没有导入相应的库.
  16. 一文搞定B站弹幕生成云图
  17. Linux下安装与配置aMule电驴
  18. python爬虫之多线程、多进程爬虫
  19. PHP单例模式 构造方法
  20. 通信基础概念(三)相关与正交

热门文章

  1. Python os.system(command),这样执行的command命令,和主程序是异步的吗?
  2. python如何获取百度搜索结果的真实URL
  3. 告诉家里做饭的人,这些食物一起吃才是大补!
  4. python中argmin函数_Python numpy.argmin()用法及代码示例
  5. C# Task和async/await详解
  6. python数据文件输入输出_python 文件输入与输出
  7. python元组索引_Python—范围元组中的元素索引
  8. Java Sokect编程之HTTP请求
  9. 【Clickhouse】Clckhouse 视图 可以插入 但是查询不到
  10. 【前端】vue Unknown custom element: xxxx did you register the component correctly