SPFA——路障Roadblock
来源:互联网 发布:知君本无邪 编辑:程序博客网 时间:2024/06/06 21:39
题目来源
洛谷P2176 [USACO14FEB]路障Roadblock
https://daniu.luogu.org/problem/show?pid=2176
思路
建图 求最短路长度len并记录路径 初始化答案为ans
枚举最短路路径中的边 把这条边的长度加倍 求此时的最短路长度
如果该长度与len的差大于ans 更新ans为该长度-len 还原该边长 继续枚举
代码(C++)
#include <cstdio>#include <queue>#include <bitset>using namespace std;bitset<110> in;queue<int> q;long long dis[1010]={0},length,ans=0;int n,m,u,v,w,cnt=0,pos,he[110],f[110];int en[10010],ne[10010],len[10010],fr[10010];inline void add();int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;++i)scanf("%d%d%d",&u,&v,&w),add();for(int j=1;j<n;++j)dis[j]=9223372036854775807;in[n]=1; q.push(n);while(!q.empty()){pos=q.front(); q.pop(); in[pos]=0;for(int k=he[pos];k!=0;k=ne[k])if(dis[pos]+len[k]<dis[en[k]]){dis[en[k]]=dis[pos]+len[k];f[en[k]]=k;if(in[en[k]]==0)q.push(en[k]),in[en[k]]=1;}}length=dis[1];for(int i=f[1];i!=0;i=f[fr[i]]){for(int j=1;j<n;++j)dis[j]=9223372036854775807;len[i]*=2; in=0; in[n]=1; q.push(n);while(!q.empty()){pos=q.front(); q.pop(); in[pos]=0;for(int k=he[pos];k!=0;k=ne[k])if(dis[pos]+len[k]<dis[en[k]]){dis[en[k]]=dis[pos]+len[k];if(in[en[k]]==0)q.push(en[k]),in[en[k]]=1;}}len[i]/=2; in=0;if(dis[1]-length>ans)ans=dis[1]-length;}printf("%lld",ans);return 0;}inline void add(){en[++cnt]=v;len[cnt]=w;ne[cnt]=he[u];he[u]=cnt; fr[cnt]=u;en[++cnt]=u;len[cnt]=w;ne[cnt]=he[v];he[v]=cnt; fr[cnt]=v;}
阅读全文
0 0
- SPFA——路障Roadblock
- SPFA——路障Roadblocks
- 【USACO】Roadblock路障 解题报告
- 洛谷 P2176 [USACO14FEB]路障Roadblock
- POJ 3255 Roadblock(SPFA寻找次短路)
- [BZOJ3445][Usaco2014 Feb] Roadblock(spfa)
- [USACO NOV06 GOLD]block 路障(Spfa)
- Roadblock
- [最小割最大流 || 最短路] roadblock Dinic && SPFA + SLE
- [USACO2011Dec] Roadblock
- USACO2014FebruaryGold Roadblock
- 最短路——SPFA
- 最短路——SPFA
- 算法复习——SPFA
- 图论——SPFA模板
- SPFA——玛丽卡
- 贪心+SPFA——游
- HDU4360—SPFA算法实现
- IntelliJ IDEA 在网页修改数据,但是在浏览器刷新的时候,不能读取到修改之后的数据
- JAVA图像处理之算子
- 大顶堆(小顶堆同理可推)
- 解决浏览器 Provisional headers are shown 无法向后台发送请求问题
- linux 6
- SPFA——路障Roadblock
- BZOJ 2453: 维护队列 分块 二分
- LLE原理总结
- 阵变换:沿任意轴旋转及其推导
- Banner
- 1074. 宇宙无敌加法器(20)
- 解析php中$_REQUEST的用法
- 二叉树专题-lintcode非递归遍历与总结
- git rebase 用法简介