bzoj1726 [Usaco2006 Nov]Roadblocks第二短路
来源:互联网 发布:ubuntu des 解密 编辑:程序博客网 时间:2024/05/18 15:56
次短路的裸题,由于不是树不能用dp,所以spfa分情况讨论就好了
disa[x]+val[i]小于disa[v]时,将原来的disa[v]更新disb,然后disa[x]更新disa[v]
disa[x]+val[i]大于disa[v]时,如果disb[v]小于disb[x]+val[i]就可以用disa[x]+val[i]更新disb[v]
最后就是disa[v]==disa[x]+val[i]时,直接用disb[x]更新disb[v]就可以了。
#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)#define inf 0x3c3c3c3cusing namespace std;const int N=3e5+5;int head[N],go[N],next[N],val[N];int q[N],disa[N],disb[N];bool vis[N];int n,m,tot;inline void spfa(){ memset(vis,0,sizeof(vis)); fo(i,1,n)disa[i]=disb[i]=inf; int t=0,w=1; disa[1]=0; vis[1]=1; q[1]=1; while (t!=w) { ++t; if (t==100001)t=0; int x=q[t]; for(int i=head[x];i;i=next[i]) { int v=go[i]; bool flag=0; if (disa[x]+val[i]<disa[v]) { disb[v]=min(disa[v],disb[x]+val[i]); disa[v]=disa[x]+val[i]; flag=1; } else if (disa[x]+val[i]>disa[v]&&disa[x]+val[i]<disb[v]) { disb[v]=disa[x]+val[i]; flag=1; } else if (disa[x]+val[i]==disa[v]&&disb[x]+val[i]<disb[v]) { disb[v]=disb[x]+val[i]; flag=1; } if (flag&&!vis[v]) { vis[v]=1; ++w; if (w==100001)w=0; q[w]=v; } } vis[x]=0; }}inline void add(int x,int y,int z){ go[++tot]=y; next[tot]=head[x]; val[tot]=z; head[x]=tot;}int main(){ scanf("%d%d",&n,&m); fo(i,1,m) { int x,y,z; scanf("%d%d%d",&x,&y,&z); add(x,y,z); add(y,x,z); } spfa(); printf("%d\n",disb[n]); return 0;}
阅读全文
0 0
- [Bzoj1726][Usaco2006 Nov]Roadblocks第二短路
- bzoj1726【Usaco2006 Nov】Roadblocks第二短路
- bzoj1726: [Usaco2006 Nov]Roadblocks第二短路
- 【bzoj1726】【Usaco2006 Nov】【Roadblocks第二短路】【spfa】
- bzoj1726 [Usaco2006 Nov]Roadblocks第二短路
- 【bzoj1726】 Usaco2006 Nov Roadblocks第二短路 次短路模板
- bzoj1726 [Usaco2006 Nov]Roadblocks第二短路(spfa)
- BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路
- bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路
- 1726: [Usaco2006 Nov]Roadblocks第二短路
- BZOJ 1726 [Usaco2006 Nov]Roadblocks第二短路
- BZOJ1726 POJ3255 P2865: [Usaco2006 Nov]Roadblocks路障
- [Usaco2006 Nov]Roadblocks 次短路
- [Usaco2006 Nov]Roadblocks第二短路 堆优化的dijkstra
- BZOJ1726 Roadblocks第二短路 [次短路]
- bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路(A*第k短路)
- 【POJ3255】【洛谷2865】[Usaco2006 Nov]路障Roadblocks(次短路)
- 【BZOJ 1726】【Usaco 2006 Nov】Roadblocks 次短路
- Spring框架中的单例Beans是线程安全的么
- [OpenGL 超级宝典][笔记] 8.2 帧缓冲区(FBO)
- leetcode257. Binary Tree Paths
- Android热修复原理
- 中国剩余定理
- bzoj1726 [Usaco2006 Nov]Roadblocks第二短路
- 学习
- kotlin汇总10-Java调用kotlin
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- Codeforces 811 A Vladik and Courtesy
- IPC之消息队列
- RadioButton和CheckBox的区别及使用场景
- gVim打造成成IDE
- 创建进程程序-2.主函数