测评传送门

题意:

给你一个有向无环图,每个点有一个权值,给定起点,和多个终点。

求到达终点的最大权值。

输入

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

输出

47


思路:

Tarjan 缩点,点权转边权,跑SPFA

感谢nan葛格的博客讲解

code

#include<stdio.h>
#include<stack>
#include<queue>
#include<algorithm>
using namespace std;
const int mxn=510000;
struct Edge {int to,next;
}e[mxn<<1],E[mxn<<1];
int n,m,cnt,idx,tot,st,k,ans;
int first[mxn<<1],dfn[mxn],low[mxn],w[mxn],W[mxn],bel[mxn],dis[mxn],head[mxn<<1];
bool ins[mxn],vis[mxn];
stack<int> stk;
queue<int> q;
void add(int from,int to) {e[++cnt].to=to;e[cnt].next=first[from];first[from]=cnt;
}void Tarjan(int x)
{dfn[x]=low[x]=++idx;ins[x]=1;stk.push(x);for(int i=first[x];i;i=e[i].next) {int to=e[i].to;if(!dfn[to]) {Tarjan(to);low[x]=min(low[x],low[to]);} else if(ins[to]) low[x]=min(low[x],dfn[to]);}if(low[x]==dfn[x]) {tot++;int top;do {top=stk.top();stk.pop();ins[top]=0;bel[top]=tot;}while(top!=x);}
}void rebuild()
{ for(int x=1;x<=n;++x) {for(int i=first[x];i;i=e[i].next) {int to=e[i].to;if(bel[x]==bel[to]) continue;E[++cnt].to=bel[to];E[cnt].next=head[bel[x]];head[bel[x]]=cnt;}W[bel[x]]+=w[x];}
}void spfa()
{dis[bel[st]]=W[bel[st]];q.push(bel[st]);while(!q.empty()) {int x=q.front();q.pop();vis[x]=0;for(int i=head[x];i;i=E[i].next) {int to=E[i].to;if(dis[x]+W[to]>dis[to]) {dis[to]=dis[x]+W[to];if(!vis[to]) {vis[to]=1;q.push(to);}}}}
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;++i) {int from,to;    scanf("%d%d",&from,&to);add(from,to);}for(int i=1;i<=n;++i) {scanf("%d",&w[i]);if(!dfn[i]) Tarjan(i);}cnt=0;rebuild();scanf("%d%d",&st,&k);spfa();for(int i=1;i<=k;++i) {int x;scanf("%d",&x);ans=max(ans,dis[bel[x]]);}printf("%d",ans);return 0;
}
/*
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
*/

转载于:https://www.cnblogs.com/qseer/p/9831711.html

ATM(BZOJ 1179)相关推荐

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

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

  2. ATM(银行取款机)

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

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

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

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

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

  5. 分裂游戏(bzoj 1188)

    Description 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i]颗巧克力豆,两个人轮流取豆子 ...

  6. 洛谷 P3159(BZOJ 2668)[CQOI2012]交换棋子

    有一个\(n\)行\(m\)列的黑白棋盘,你每次可以交换两个相邻格子(相邻是指有公共边或公共顶点)中的棋子,最终达到目标状态.要求第\(i\)行第\(j\)列的格子只能参与\(m[i][j]\)次交换 ...

  7. 飞镖(bzoj 2335)

    Description 飞镖是在欧洲颇为流行的一项运动.它的镖盘上分为20个扇形区域,分别标有1到20的分值,每个区域中有单倍.双倍和三倍的区域,打中对应的区域会得到分值乘以倍数所对应的分数.例如打中 ...

  8. bzoj 1179: [Apio2009]Atm(Trajan+SPFA)

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

  9. OSU!(bzoj 4318)

    Description osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1 ...

最新文章

  1. 2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握
  2. mac的mysql数据库管理_Mac使用MySQL Workbench管理MySQL数据库
  3. 我应该如何处理MySQL中的--secure-file-priv?
  4. MySQL连接查询的分类
  5. python中queue使用_在python2.6中使用Queue类
  6. PHP中删除目录的三种方法
  7. C# StreamReader类和StreamWriter类
  8. Android布局_LinearLayout布局
  9. JAVA中判断一个字符串是否包含另一个字符串
  10. python引入redis_实操演练解读非关系型数据库—Redis
  11. Python入门--字符串的判断操作
  12. replace()替换文字扑获组做法
  13. 使c语言程序变成流程图的软件6,下载_AutoFlowchart(C语言流程图生成器) V3.5.3 英文版_6z6z下载站...
  14. 微信和qq默认表情代码对照表及表情文件下载
  15. python 工资管理软件_Python:企业微信指量发工资条工具 -消息发送模块
  16. namesilo域名注册教程
  17. FANUC机器人示教时遇到奇异点的解决办法
  18. FANUC机器人的移动速度范围(仅供参考)
  19. Python的基本数据类型
  20. ACM Ackermann function(阿克曼函数)

热门文章

  1. 数人云CEO王璞:容器正成为软件交付的标准
  2. 分享:手机应用存5个严重的信息安全隐患你晓得吗?
  3. 成幻Online Judge 1.00 Beta 正式发布 2007.6.22
  4. 5 判断数据是否存在_Trie树实现:100亿URL中判断某个URL是否存在
  5. 机器学习知识点(十八)密度聚类DBSCAN算法Java实现
  6. 哈夫曼编码之大根堆小根堆揭西县
  7. web静态资源访问规则||webjars的访问配置——webjars是maven库里面对css js image打的一个jar包
  8. tomcat屏蔽ip
  9. 通过gps给定的两个经纬度坐标,计算两点之间的距离
  10. Windows 技术篇-利用telnet方法ping端口通不通实例演示,如何测试服务器端口是否启用,windows启用telnet功能