一道严格次短路题,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. IDEA中使用插件添加更多可选择的主题,使代码高亮,缓解视觉疲劳

    1.点击 File-->settings(或Ctrl+Shift+S)打开IDE设置面板 点击plugins-->右侧选择Marketplace-->搜索框中输入Material-- ...

  2. android Service服务简介(一)

    作为android的四大组件之一,服务也少不了很多重要的知识点.下面我们从最基本的开始学习. 1.1服务的创建 首先创建一个ServiceTest类继承Service.我们会重写onCreate(), ...

  3. intellij IEDA 从svn拉环境到正常运行

    intellij IEDA  从svn拉环境到正常运行 1.svn拉项目 在项目选择界面点击Check out from Version Control 从中选择Subversion(SVN) 2.选 ...

  4. php-5.6.26源代码 - include_once、require_once、include、require、eval 的opcode处理器

    # ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER 实现在文件 php-\Zend\zend_vm_execute.h static int ZEND_FASTCALL ...

  5. ruby require的使用

    引用单个文件 例: 引用当前rb同目录下的file_to_require.rb先介绍3种方法 require File.join(__FILE__, '../file_to_require') req ...

  6. MetInfo最新网站漏洞如何修复以及网站安全防护

    metinfo漏洞于2018年10月20号被爆出存在sql注入漏洞,可以直接拿到网站管理员的权限,网站漏洞影响范围较广,包括目前最新的metinfo版本都会受到该漏洞的攻击,该metinfo漏洞产生的 ...

  7. JAVA 泛型方法<T>

    public static void main(String[] args) throws Exception { String[] arr = new String[]{"1", ...

  8. 微信公众号--JS-SDK

    JS-SDK 微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以 ...

  9. C++11中initializer lists的使用

    Before C++11,there was no easy way to do things like initialize a std::vector or std::map(or a custo ...

  10. Unity3d工具方法小集

    1.获取垂直水平方向上的输入: float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = I ...