【BZOJ】【APIO2009】【ATM】【强连通分量+DP】
来源:互联网 发布:java解压缩rar 编辑:程序博客网 时间:2024/06/04 18:05
传送门:
http://www.lydsy.com/JudgeOnline/problem.php?id=1179
Tarjan缩点+DAG上DP,水……
学习了dr神犇的代码风格,虽然一直不知道TOPL是神马意思……
Code:
#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<vector>#include<stack>using namespace std;const int maxn=500010;int Scc_num,Blg[maxn],s;int sor[maxn],sor_2[maxn];int cub[maxn],cub_2[maxn];int n,m;namespace Scc{stack<int>S;vector<int>G[maxn];int dfn[maxn],tot,low[maxn];void add(int u,int v){G[u].push_back(v);}bool ins[maxn];void Tarjan(int u){dfn[u]=low[u]=++tot;ins[u]=1;S.push(u);for(int i=0;i<G[u].size();i++){int v=G[u][i];if(!dfn[v]){Tarjan(v);low[u]=min(low[u],low[v]);}elseif(ins[v])low[u]=min(low[u],dfn[v]);}if(dfn[u]==low[u]){Scc_num++;int v;do{v=S.top();S.pop();ins[v]=0;Blg[v]=Scc_num;}while(u!=v);}}};namespace TOPL{int f[maxn];vector<int>G[maxn];void add(int u,int v){G[u].push_back(v);}int bfs(){f[Blg[s]]=sor_2[Blg[s]];queue<int>q;q.push(Blg[s]);while(!q.empty()){int u=q.front();q.pop();for(int i=0;i<G[u].size();i++){int v=G[u][i];if(f[v]<f[u]+sor_2[v]){f[v]=f[u]+sor_2[v];q.push(v);}}}int maxx=0;for(int i=1;i<=Scc_num;i++)if(cub_2[i])maxx=max(maxx,f[i]);return maxx;}void solve(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);Scc::add(u,v);}for(int i=1;i<=n;i++)scanf("%d",&sor[i]);int p;scanf("%d%d",&s,&p);for(int i=1;i<=p;i++)scanf("%d",&cub[i]);for(int i=1;i<=n;i++)if(!Scc::dfn[i])Scc::Tarjan(i);for(int i=1;i<=n;i++)sor_2[Blg[i]]+=sor[i];for(int i=1;i<=p;i++)cub_2[Blg[cub[i]]]=1;for(int i=1;i<=n;i++)for(int j=0;j<Scc::G[i].size();j++){int v=Scc::G[i][j];if(Blg[i]!=Blg[v])add(Blg[i],Blg[v]);}printf("%d\n",bfs());}};int main(){TOPL::solve();return 0;}
0 0
- 【BZOJ】【APIO2009】【ATM】【强连通分量+DP】
- BZOJ 1179: [Apio2009]Atm Tarjan强连通分量缩点,SPFA,DP
- 【BZOJ】1179 [Apio2009]Atm 强连通分量+最短路
- bzoj 1179: [Apio2009]Atm spfa+强连通分量
- [BZOJ1179][APIO2009] ATM 强连通分量
- [BZOJ1179]APIO2009 ATM |强联通分量|DP
- 【bzoj1179】【apio2009】Atm【强连通分量缩点+spfa】
- 【bzoj1179】[Apio2009]抢掠计划atm 强连通分量缩点+spfa
- 【BZOJ1179】【Apio2009】Atm 强连通分量缩点+拓扑DP/拓扑最长路 kosaraju+tarjan+dfs转非递归三种代码
- 【APIO2009】【强连通分量】【DAG】抢掠计划
- [APIO2009]抢掠计划(强连通分量+缩点+拓扑排序+dp)
- |BZOJ 2427|树形DP|强连通分量|[HAOI2010]软件安装
- bzoj 2387: [Ceoi2011]Traffic 强连通分量+dp
- BZOJ 1179 ATM (强连通分量缩点+spfa最长路)
- 强连通分量+dp+uva11324
- BZOJ 1179: [Apio2009]Atm
- BZOJ P1179[Apio2009]Atm
- BZOJ 1179: [Apio2009]Atm
- Cocos2d-x CCNotificationCenter 通知中心 自定义消息事件
- 阿里电话面试经过与总结
- [LeetCode] Binary Tree Inorder Traversal
- Mongoose 操作
- 北邮OJ 2 大数减法
- 【BZOJ】【APIO2009】【ATM】【强连通分量+DP】
- NTP of rtp
- PHP内置的预定义常量大全
- 移植android ndk c++各种兼容性问题
- UIScrollView实现重用
- skiplist 跳跃表详解及其编程实现
- JAVA 保留两位小数
- .NET中的错误处理
- 花生壳ping不通,就是禁止ping不让看响应时间,除了花生壳的软件