题意:给你无向带权图,求次短路径

题解:加一个次短路的数组,用于距记录源点到此点的次短路长度,注意初始化是源点到自己的次短路是极大值

   接着再使用dijkstra算法,它是每次选用现在连上(记录了)的点与其他点的最小权值的边去更新其他所有的点

   就是在dij的算法上进行简单的修改,需要修改的是每次最短路更新之后再更新次短路,但是保证更新的次短路大于记录的次短路并小于记录的最短路

#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
const int inf=<<;
const int maxn=;
struct Edge
{
int v,val;
Edge(int v,int val):v(v),val(val) {}
bool operator < (const Edge &c)const//改写大顶堆成为小顶堆
{
return val>c.val;
}
};
vector<Edge> vec[maxn];
int dis[maxn],secondis[maxn];//记录第二短路径
void init(int n)
{
for(int i=; i<=n; ++i)
{
vec[i].clear();
}
}
void dijkstraSecond(int n,int s)
{
priority_queue<Edge> pque;
for(int i=; i<=n; ++i)
{
dis[i]=inf;
secondis[i]=inf;//注意初始化
}
//secondis[s]=0;//不能初始化
dis[s]=;
pque.push(Edge(s,));
while(!pque.empty())
{
Edge disE=pque.top();
pque.pop();
if(secondis[disE.v]<disE.val)//注意次短路都失败了才不能加上这条路
continue;
for(int i=; i<vec[disE.v].size(); ++i)
{
Edge endE=vec[disE.v][i];
int disnow=disE.val+endE.val;//注意这儿不能用dis求
if(dis[endE.v]>disnow)//松弛最短路
{
swap(dis[endE.v],disnow);//由于松弛次短路,所以这儿是交换两者
pque.push(Edge(endE.v,dis[endE.v]));
}
if(secondis[endE.v]>disnow&&dis[endE.v]<disnow)//松弛次短路
{
secondis[endE.v]=disnow;
pque.push(Edge(endE.v,secondis[endE.v]));
}
}
}
}
int main()
{
int n,m;
while(~scanf("%d %d",&n,&m))
{
init(n);
while(m--)
{
int u,v,c;
scanf("%d %d %d",&u,&v,&c);
vec[u].push_back(Edge(v,c));
vec[v].push_back(Edge(u,c));
}
dijkstraSecond(n,);
// for(int i=1; i<=n; ++i)
// {
// printf("secondis[i]=%d\n",secondis[i]);
// }
printf("%d\n",secondis[n]);
}
return ;
}

POJ - 3255 次短路径的更多相关文章

  1. POJ 3255 Roadblocks (Dijkstra求最短路径的变形)(Dijkstra求次短路径)

    Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16425   Accepted: 5797 Descr ...

  2. POJ - 3255 SPFA+邻接表求次短路径

    题意:给出m条边 , n个顶点,u [ i ]到v [ i ] 的距离w [ i ],求除了最短路的那条最短的边的长度. 思路:之前有做过相似的题,使用迪杰斯特拉算法求单源最短路径,并且记录路径,枚举 ...

  3. 单源次短路径:poj:3255-Roadblocks

    Roadblocks Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17521 Accepted: 6167 Descripti ...

  4. 次最短路径 POJ 3255 Roadblocks

    http://poj.org/problem?id=3255 这道题还是有点难度 要对最短路径的算法非常的了解 明晰 那么做适当的修改 就可以 关键之处 次短的路径: 设u 到 v的边权重为cost ...

  5. POJ 3255 Roadblocks(A*求次短路)

    Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12167   Accepted: 4300 Descr ...

  6. MST:Roadblocks(POJ 3255)

       路上的石头 题目大意:某个街区有R条路,N个路口,道路双向,问你从开始(1)到N路口的次短路经长度,同一条边可以经过多次. 这一题相当有意思,现在不是要你找最短路径,而是要你找次短路经,而且次短 ...

  7. poj 3255 求次大最短路

    Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5508   Accepted: 2088 Descri ...

  8. POJ 3255 Roadblocks (次级短路问题)

    解决方案有许多美丽的地方.让我们跳回到到达终点跳回(例如有两点)....无论如何,这不是最短路,但它并不重要.算法能给出正确的结果 思考:而最短的路到同一点例程.spfa先正达恳求一次,求的最短路径的 ...

  9. 学习笔记CB006:依存句法、LTP、n元语法模型、N-最短路径分词法、由字构词分词法、图论、概率论

    依存句法分析,法国语言学家L.Tesniere1959年提出.句法,句子规则,句子成分组织规则.依存句法,成分间依赖关系.依赖,没有A,B存在错误.语义,句子含义. 依存句法强调介词.助词划分作用,语 ...

随机推荐

  1. LeetCode_Search in Rotated Sorted Array

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...

  2. 聊聊高并发(三十四)Java内存模型那些事(二)理解CPU快速缓存的工作原理

    在上一篇聊聊高并发(三十三)从一致性(Consistency)的角度理解Java内存模型 我们说了Java内存模型是一个语言级别的内存模型抽象.它屏蔽了底层硬件实现内存一致性需求的差异,提供了对上层的 ...

  3. C++入门(1)

    #include<>直接从编译器自带的函数库中寻找文件 #include""是先从自定义的文件中找 ,如果找不到在从函数库中寻找文件 采用"< > ...

  4. js如何转义和反转义html特殊字符

    “<”如何反转义为“<”,“>”如何反转义为“>”,下面就介绍如何用js来实现这种类似的操作. //HTML转义 function HTMLEncode(html) { var ...

  5. linux下编写简单的守护进程

    搭建linux服务器的时候,需要写一个简单的守护进程来监控服务的运行情况,shell脚本如下: #!/bin/sh function daemon() { while true do server=` ...

  6. MySQL · 引擎特性 · InnoDB redo log漫游(转)

    前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性. 和大多数关系型数据库一样, ...

  7. 5、RabbitMQ - Exchange之 fanout \ 【direct 关键字发送】 \ topic

    pytho系列之 RabbitMQ - Exchange几种模式 RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 Rab ...

  8. Hadoop RPC实例

    本文发表于本人博客. 上次写了个hadoop伪分布环境搭建的笔记了,今天来说下hadoop分布式构建的基础RPC,这个RPC在提交Job任务的时候底层就是创建了RPC来实现远程过程调用服务端. 我们首 ...

  9. nginx配置访问图片路径(windows)

    简介 Nginx(("engine x")由俄罗斯的程序设计师Igor Sysoev所开发)是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.PO ...

  10. 2016-2017 National Taiwan University World Final Team Selection Contest J - Zero Game

    题目: You are given one string S consisting of only '0' and '1'. You are bored, so you start to play w ...