题目链接:http://poj.org/problem?id=3255

解题思路:

  昨晚两点多睡不着翻起来刷《挑战》的题,结果遇到这道求次短路的题,一脸懵逼。想了半小时没什么思路就看他的解答了。具体看代码吧,讲解可以参考《挑战程序设计竞赛》P119。其实还是Dijkstra算法的变形。但是这个变形确实不太好想。

AC代码:

 #include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
typedef pair<int,int> P;
const int maxn=+,inf=0x7ffffff;
struct edge{
int to,cost;
};
vector<edge> G[maxn];
int d[maxn],d2[maxn];
int main()
{
int N,R,A,B,D;
scanf("%d%d",&N,&R);
while(R--){
scanf("%d%d%d",&A,&B,&D);
edge temp;
temp.cost=D;
temp.to=B; G[A].push_back(temp);
temp.to=A; G[B].push_back(temp);
}
priority_queue<P,vector<P>,greater<P> > que;
for(int i=;i<=N;i++) d[i]=d2[i]=inf;
d[]=;
que.push(P(,));
while(!que.empty()){
P p=que.top(); que.pop();
int v=p.second;
if(d2[v]<p.first) continue; //如果次短路都比此短,那么就没有更新的必要了
for(int i=;i<G[v].size();i++){
edge e=G[v][i];
int dt=p.first+e.cost; //一开始那个p.first被我携程d[v]了,很显然有bug
if(d[e.to]>dt){
swap(d[e.to],dt);
que.push(P(d[e.to],e.to));
}
if(d2[e.to]>dt&&dt>d[e.to]){
d2[e.to]=dt;
que.push(P(d2[e.to],e.to));
}
}
}
printf("%d\n",d2[N]); return ;
}

POJ3255的更多相关文章

  1. poj3255,poj2449

    这里介绍怎么求k短路 A*搜索 估价函数f[i]=g[i]+h[i]; 在这里g[i]表示到达点i当前路径长,h[i]表示点i到达终点的最短距离 在搜索中,每次都取队列估价函数值最小的点,然后把它所能 ...

  2. POJ3255次短路

    POJ3255 题意:给定一个图,求从1到n的次短路 分析:我们需要在dijkstra上作出一些修改,首先,到某个顶点v的次短路要么是到其他某个顶点u的最短路在加上u到v的边,要么是到v的次短路再加上 ...

  3. POJ-3255 Roadblocks---Dijkstra队列优化+次短路

    题目链接: https://vjudge.net/problem/POJ-3255 题目大意: 给无向图,求1到n的次短路长度 思路: 由于边数较多,应该使用dijkstra的队列优化 用d数组存储最 ...

  4. POJ3255 Roadblocks [Dijkstra,次短路]

    题目传送门 Roadblocks Description Bessie has moved to a small farm and sometimes enjoys returning to visi ...

  5. 【POJ3255/洛谷2865】[Usaco2006 Nov]路障Roadblocks(次短路)

    题目: POJ3255 洛谷2865 分析: 这道题第一眼看上去有点懵-- 不过既然要求次短路,那估计跟最短路有点关系,所以就拿着优先队列优化的Dijkstra乱搞,搞着搞着就通了. 开两个数组:\( ...

  6. cogs 315. [POJ3255] 地砖RoadBlocks

    315. [POJ3255] 地砖RoadBlocks ★★★   输入文件:block.in   输出文件:block.out   简单对比时间限制:1 s   内存限制:128 MB Descri ...

  7. POJ3255(Roadblocks)--次短路径

    点这里看题目 3228K 485MS G++ 2453B 根据题意和测试用例知道这是一个求次短路径的题目.次短路径,就是比最短路径长那么一丢丢的路径,而题中又是要求从一点到指定点的次短路径,果断Dij ...

  8. poj3255 Roadblocks

    Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13594   Accepted: 4783 Descr ...

  9. 【图论】POJ-3255 次短路径

    一.题目 Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her ...

  10. 《挑战程序设计竞赛》2.5 最短路 AOJ0189 2249 2200 POJ3255 2139 3259 3268(5)

    AOJ0189 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0189 题意 求某一办公室到其他办公室的最短距离. 多组输入,n表示 ...

随机推荐

  1. IDEA 之 Java项目复制

    1.复制一个项目,并改名字  2.更改以下文件名字  3.将以下文件中的原有名字,替换成更改后的名字(例如MyWebapp07替换成MyWebapp08) 4.将out文件夹给删除 5.然后用IDEA ...

  2. Neditor 2.1.16 发布,修复缩放图片问题

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   BUG 修复 修复缩放图片时,鼠标mouseUp后图片还是在缩放 by @ShinyHwong Demo:  https://demo.ne ...

  3. wampserver安装之后无法打开localhost

    2019独角兽企业重金招聘Python工程师标准>>> 如上图 是服务未成功启动 服务成功启动标志 修改服务器监听端口 在安装完wampserver,打开,如果在状态栏上的图标不是绿 ...

  4. Get史上最优雅的加密方式!没有之一!

    你的配置文件是不是还在使用下面这种落后的配置暴露一些密码: jdbc.url=jdbc:mysql://127.0.0.1:3305/afei jdbc.username=afei 如果是,那么继续往 ...

  5. 配置Ansible加速

    下载安装包 wget https://files.pythonhosted.org/packages/source/m/mitogen/mitogen-0.2.7.tar.gz tar axf mit ...

  6. centos安装libconfig

    安装很简单,生成的.so文件会被安装到/usr/local/lib目录,记得修改/etc/profile. 安装过程会出现两个错误: What is makeinfo, and how do I ge ...

  7. python学习笔记-零碎知识点

    1. 绝对值 abs(-4) 结果: 4 2.

  8. 记一次jackson序列化Boolean的坑

    @Data public class CouponTemplateDto { /** * 优惠券类型id */ private Long couponTypeId; /** * 优惠券模板id */ ...

  9. LeetCode--Squares of a Sorted Array && Robot Return to Origin (Easy)

    977. Squares of a Sorted Array (Easy)# Given an array of integers A sorted in non-decreasing order, ...

  10. 【Spark】RDD(Resilient Distributed Dataset)究竟是什么?

    目录 基本概念 官方文档 概述 含义 RDD出现的原因 五大属性 以单词统计为例,一张图熟悉RDD当中的五大属性 解构图 RDD弹性 RDD特点 分区 只读 依赖 缓存 checkpoint 基本概念 ...