由于次短路一定存在,则可知次短路一定是最短路中某一条边不走,然后回到最短路,而且只是一条边,两条边以上不走的话,就一定不会是次短路了(即以边换边才能使最小)。所以可以枚举每一条边,算出从起点到这条边起点的最短距离,以及从终点到这条边终点的最短距离,再加上这条边的权值,看是否是次短路(比最短路总权值大的最小权值的路径)

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#define Mod 1000000007
using namespace std;
#define N 5007 vector<pair<int,int> > G[];
int ds[N],dt[N],vis[N];
int n,m,k; void SPFA(int s,int *d)
{
int i,u,v;
queue<int> que;
memset(vis,,sizeof(vis));
d[s] = ;
vis[s] = ;
que.push(s);
while(!que.empty())
{
v = que.front();
que.pop();
vis[v] = ; //边允许重复走
for(i=;i<G[v].size();i++)
{
u = G[v][i].first;
if(d[v] + G[v][i].second < d[u])
{
d[u] = d[v] + G[v][i].second;
if(!vis[u])
{
vis[u] = ;
que.push(u);
}
}
}
}
} int main()
{
int u,v,w;
int res,tmp,i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=;i<n;i++)
G[i].clear();
for(i=;i<=n;i++)
ds[i] = dt[i] = Mod;
while(m--)
{
scanf("%d%d%d",&u,&v,&w);
G[u].push_back(make_pair(v,w));
G[v].push_back(make_pair(u,w));
}
SPFA(,ds);
SPFA(n,dt);
res = Mod;
for(i=;i<=n;i++)
for(j=;j<G[i].size();j++)
{
u = i;
v = G[i][j].first;
w = G[i][j].second;
tmp = ds[u] + dt[v] + w;
if(tmp > ds[n] && res > tmp)
res = tmp;
}
printf("%d\n",res);
}
return ;
}

最新文章

  1. python网络编程【二】(使用UDP)
  2. XCode v8.11 重量级分表分库(无视海量数据)
  3. 论文笔记之:Deep Attention Recurrent Q-Network
  4. 一个自己用的代码备份工具,支持delphi,android,java,可以自己添加配置,灵活支持大部分编程语言
  5. PHP 500 -Invalid command RewriteEngine的解决
  6. 基于Linux的oracle数据库管理 part4( shell管理 上 )
  7. iOS开发工程师笔试题
  8. python 解析 配置文件
  9. android面试题之七
  10. 基于AXI4总线卷积FPGA加速IP核的尝试
  11. Oracle,Sql,procedure 感觉自己写的很棒的一个存储过程
  12. Xcode中Groups和Folder的区别
  13. 【WCF系列】(一)为什么我们需要WCF
  14. 深度学习实践-强化学习-bird游戏 1.np.stack(表示进行拼接操作) 2.cv2.resize(进行图像的压缩操作) 3.cv2.cvtColor(进行图片颜色的转换) 4.cv2.threshold(进行图片的二值化操作) 5.random.sample(样本的随机抽取)
  15. python 获取列表中次大的数值.
  16. 洛谷P1118数字三角形题解
  17. GIL学习
  18. 费马小定理与GCD&amp;LCM
  19. Switch 选择结构
  20. ue4开发入门教程

热门文章

  1. LGLSearchBar
  2. 多准则决策模型-TOPSIS评价方法-源码
  3. 硅谷新闻3--使用Android系统自带的API解析json数据
  4. webform(内置对象)
  5. Webform(简单控件、复合控件)
  6. 高性能文件缓存key-value存储—Memcached
  7. 推荐几个的chorme的扩展程序
  8. vh属性-- 一个永远垂直居中的弹出框
  9. IOS酷炫的下拉刷新链接收集
  10. 推送(PUSH)