一道严格次短路题,WA了一下午回家才发现bellman_ford中的vis [ o ] = false 写成了 vis [ S ] = false.被自己脑残了一脸。。。。

 #include<climits>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std ; void min_equal ( int & a , const int b ) {
if ( a > b ) a = b ;
} const int MAXN = + ;
const int MAXR = + ; struct edge {
int dis ;
int p ;
edge * next ;
} ; edge * V [ MAXN ] ;
edge E [ MAXR * ] ; void add_edge ( const int a , const int b , const int dis ) {
static edge * t = E ;
edge * x = t ++ , * y = t ++ ;
x -> dis = y -> dis = dis ;
x -> p = b ; y -> p = a ;
x -> next = V [ a ] ; y -> next = V [ b ] ;
V [ a ] = x ; V [ b ] = y ;
} int N , R ;
int dis1 [ MAXN ] ;
int dis2 [ MAXN ] ; void bellman_ford ( const int S , const int T , int dis [] ) {
static int vis [ MAXN ] ;
static const int INF = INT_MAX ;
static queue < int > q ;
fill ( dis , dis + N + , INF ) ;
fill ( vis , vis + N + , ) ;
dis [ S ] = ;
vis [ S ] = true ;
q . push ( S ) ;
while ( ! q . empty () ) {
const int o = q . front () ;
q . pop () ;
vis [ o ] = false ;
for ( edge * v = V [ o ] ; v != ; v = v -> next )
if ( dis [ o ] + v -> dis < dis [ v -> p ] ) {
dis [ v -> p ] = dis [ o ] + v -> dis ;
if ( ! vis [ v -> p ] ) {
vis [ v -> p ] = true ;
q . push ( v -> p ) ;
}
}
}
} int main () {
scanf ( "%d%d" , & N , & R ) ;
while ( R -- ) {
int a , b , c ;
scanf ( "%d%d%d" , & a , & b , & c ) ;
add_edge ( a , b , c ) ;
}
bellman_ford ( , N , dis1 ) ;
bellman_ford ( N , , dis2 ) ;
int ans = INT_MAX ;
for ( int i = ; i <= N ; ++ i )
for ( edge * v = V [ i ] ; v != ; v = v -> next ) {
const int a = dis1 [ i ] + v -> dis + dis2 [ v -> p ] ;
if ( a != dis1 [ N ] ) min_equal ( ans , a ) ;
}
printf ( "%d\n" , ans ) ;
return ;
}

bzoj1726 第二短路的更多相关文章

  1. BZOJ1726: [Usaco2006 Nov]Roadblocks第二短路

    1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 768  Solved: 369[S ...

  2. BZOJ1726: [Usaco2006 Nov]Roadblocks第二短路 K短路

    Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样, ...

  3. 最短路【bzoj1726】: [Usaco2006 Nov]Roadblocks第二短路

    1726: [Usaco2006 Nov]Roadblocks第二短路 Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她 ...

  4. Bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路 dijkstra,堆,A*,次短路

    1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 969  Solved: 468[S ...

  5. BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路( 最短路 )

    从起点和终点各跑一次最短路 , 然后枚举每一条边 , 更新answer ---------------------------------------------------------------- ...

  6. BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路

    1726: [Usaco2006 Nov]Roadblocks第二短路 Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她 ...

  7. 1726: [Usaco2006 Nov]Roadblocks第二短路

    1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 835  Solved: 398[S ...

  8. [模板] 次短路 | bzoj1726-[Usaco2006Nov]Roadblocks第二短路

    简介 所谓次短路, 顾名思义, 就是第二短路. :P 1到n的次短路长度必然产生于:1到x的最短路 + edge(x,y) + y到n的最短路 简单证明一下: 设 \(dis(i,j)\) 表示 \( ...

  9. [Usaco2006 Nov]Roadblocks第二短路

    贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路. 贝茜所在的 ...

随机推荐

  1. Xcode升到7.1插件失效解决方法

    Mac前段时间下载了新的OS系统与Xcode 7.1,然而在使用Xcode 7.1时,发现插件不能用了,瞬间木有爱了,正好交流群里有人问到了插件失效的问题,经过各路大神的神通最终用下面这种方法完美解决 ...

  2. git中如何忽略文件上传?

    使用原因:至于我们为什么要使用git忽略文件,原因很多.就比如我自己的情况吧!自己一个人多地方开发,为了代码同步,这样很方便.但是有个问题就是,我创建 的是开源项目,上面有一些服务器上面的配置信息,这 ...

  3. 20180803UnionPay银联支付

    LNMP环境下开发的银联支付(测试环境) 1.准备条件 a.银联支持API:https://open.unionpay.com/ajweb/help/api b.选择开发软件包 图示: c.我选择: ...

  4. 基于设备树的led驱动程序

    #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include ...

  5. Lucene如何实现多条件搜索?

    有两种方式可以实现, 一是:Lucene搜索API中提供了一个布尔查询器(BooleanQuery),它可以包含多个查询器,每个查询器Occur枚举控制是“and” 还是“or” BooleanQue ...

  6. Android开发——Google关于Application Not Responding的建议

    秒内没有执行完毕. 2.       避免ANR的一些建议 Android applications normally run entirely on asingle (i.e. main) thre ...

  7. shell -- for、while用法

    #数字段形式for i in {1..10}do   echo $idone #详细列出(字符且项数不多)for File in 1 2 3 4 5do    echo $Filedone #对存在的 ...

  8. 使用USB Key(加密狗)实现身份认证

    首先你需要去买一个加密狗设备,加密狗是外形酷似U盘的一种硬件设备! 这里我使用的坚石诚信公司的ET99产品 公司项目需要实现一个功能,就是客户使用加密狗登录, 客户不想输入任何密码之类的东西,只需要插 ...

  9. jmeter操作JDBC

    1. 依次添加计划.线程组.JDBC Connection Configuration.JDBC Request.HTTP请求.Debug Sampler.察看结果树 在计划中导入mysql的jdbc ...

  10. TortoiseGit小乌龟 git管理工具

    1.新建分支git远端新建分支: b001本地git目录:右击--TortoiseGit--获取(会获取到新建分支) 2.本地新建分支对应远端分支本地新建分支:b001 关联远端分支b001(之后工作 ...