1179: [Apio2009]Atm

Time Limit: 15 Sec  Memory Limit: 162 MB
Submit: 4039  Solved: 1754
[Submit][Status][Discuss]

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

思路还是很简单的

我们假设是有向无环图,那么很显然可以dp

求出起点到所有酒吧的最长路就是答案

但这道题有环,就要先将所有的强联通分量缩个点了

还是挺麻烦的

#include<stdio.h>
#include<vector>
#include<stack>
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std;
vector<int> G[500005], Gp[500005];
stack<int> st;
queue<int> q;
int cnt, T, jb[500005], val[500005], fs[500005], low[500005], t[500005], vis[500005], scc[500005], dp[500005];
void Trajan(int u)
{int i, v;vis[u] = 1;st.push(u);t[u] = low[u] = ++T;for(i=0;i<G[u].size();i++){v = G[u][i];if(vis[v]==0){Trajan(v);low[u] = min(low[u], low[v]);}else if(scc[v]==0)low[u] = min(low[u], t[v]);}if(low[u]==t[u]){cnt++;while(st.empty()==0){v = st.top();st.pop();scc[v] = cnt;fs[cnt] += val[v];if(v==u)break;}}
}
int main(void)
{int n, m, i, j, x, y, S, p, ans;scanf("%d%d", &n, &m);for(i=1;i<=m;i++){scanf("%d%d", &x, &y);G[x].push_back(y);}for(i=1;i<=n;i++)scanf("%d", &val[i]);scanf("%d%d", &S, &p);for(i=1;i<=p;i++){scanf("%d", &x);jb[x] = 1;}Trajan(S);for(i=1;i<=n;i++){for(j=0;j<G[i].size();j++){x = G[i][j];if(scc[i]!=scc[x])Gp[scc[i]].push_back(scc[x]);}}memset(vis, 0, sizeof(dp));q.push(scc[S]);dp[scc[S]] = fs[scc[S]];vis[scc[S]] = 1;while(q.empty()==0){x = q.front();q.pop();vis[x] = 0;for(i=0;i<Gp[x].size();i++){y = Gp[x][i];if(dp[x]+fs[y]>dp[y]){dp[y] = dp[x]+fs[y];if(vis[y]==0){q.push(y);vis[y] = 1;}}}}ans = 0;for(i=1;i<=n;i++){if(jb[i])ans = max(ans, dp[scc[i]]);}printf("%d\n", ans);return 0;
}

bzoj 1179: [Apio2009]Atm(Trajan+SPFA)相关推荐

  1. BZOJ 1179: [Apio2009]Atm Tar$滑稽 ra$jan

    1179: [Apio2009]Atm Description Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruser i 银行的 AT ...

  2. 基于python的ATM(自动取款机)项目

    用python写了一个ATM(自动取款机),共有十种功能,可用作大学生大作业. 具体实现效果: 1.功能模块 2.姓名.身份证号.电话号码的采集.设置密码.向注册的手机号发送信息(包括异常处理) 3. ...

  3. ATM(银行取款机)

    ATM(银行取款机)servlet+mysql 此次小实验可以用于小型课程设计.项目环境mysql80,java1.8,tomact9.0.对于低版本的小伙伴也是仅仅简单更改jar包,和驱动,没有实质 ...

  4. atm(选做)——实现信用卡程序 python

    atm(选做)--实现信用卡程序 基础需求: 信用卡为用户提供功能:     查询余额     查询账单     提现取款  提现手续费5% 额度 10000或自定义     转账     查看本月消 ...

  5. BZOJ 2134 单选错位(数学期望)【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2134 是 hydro 的 BZOJ ...

  6. PAT天梯赛练习题——L3-005. 垃圾箱分布(暴力SPFA)

    L3-005. 垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁 ...

  7. 什么是ATM(异步传输模式)?—Vecloud微云

    异步传输模式(ATM)也称为信元中继(在固定大小的信元中传输数据),它通过光纤或双绞线电缆(高速交换)在OSI模型的数据链路层(第2层)运行一种基于ITU-T宽带综合业务数字网(B-ISDN)标准的网 ...

  8. 2208: [Jsoi2010]连通数(Trajan+bitset)

    2208: [Jsoi2010]连通数 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 2929  Solved: 1280 [Submit][Sta ...

  9. 网络流----最小费用最大流(EK+SPFA)

    先来介绍一下什么是费用流(部分内容参考bilibili董晓算法) 给定一个网络G=(V,E),每条边有容量限制w(u,v),还有单位流量的费用c(u,v). 当(u,v)的流量为f(u,v)时,需要花 ...

最新文章

  1. PyTorch官方中文文档:torch.optim 优化器参数
  2. SSM中向后端传递的属性为多个对象的实现方法
  3. 鸿蒙os终于开始大升级,华为鸿蒙OS终于要迎来大规模推送升级了
  4. php优化if语句,php - 如何在php中优化64 if else if语句 - SO中文参考 - www.soinside.com
  5. Spring 用注解Annotation注入 abstract 抽象父类的属性
  6. Linux 题目总结
  7. wetech-cms内容管理系统源码
  8. 【LeetCode】剑指 Offer 63. 股票的最大利润
  9. win11非活动窗口如何设置 Windows11设置非活动窗口的步骤方法
  10. CentOS7.6上搭建阿里云OSS的C SDK
  11. 《RFID技术与应用》试题库(含答案)
  12. 计算机重装系统桌面文件如何恢复,电脑重装系统后桌面文件如何恢复-万兴恢复专家...
  13. 可视化指标计算公式_技巧|1个小思路,解决不同量级间指标的可视化问题
  14. 大数据最火的Spark你确定不来了解一下吗?(1)
  15. 线圆示例(Line Circle)
  16. [C]数字炸弹小游戏
  17. w500 安装mac
  18. QGis加载网络地图
  19. 【服务器】远程连接选SSH(PUTTY、Finalshell、WinSCP) 还是 远程桌面(RDP、VNC、Xmanager)
  20. Hibernate入门经典实例

热门文章

  1. python教程-Python教程
  2. 怎么自学python-如何学习好Python这门课程?老男孩Python培训全套视频
  3. python能自学成功吗-Python学习自学效果好吗?|老男孩Python人工智能培训
  4. element-ui 分页索引问题
  5. vue jsx webpack报错_从零开始,使用webpack高效搭建react工作流
  6. cover 在html中的作用,Cover
  7. html div 边框只显示右侧,CSS-只显示角边框
  8. iview组件的Table表格的内容过多时,显示title提示
  9. 天玑800处理器支持鸿蒙系统吗,为何Redmi Note 9选择天玑800U处理器?和骁龙750G差距多大...
  10. DOM获取元素、事件基础、操作元素、节点操作