POJ-3255--次短路
题目链接:http://poj.org/problem?id=3255
题目大意:n个点,m条边,求1号点到n号点的次短路。
分析:继续用dijkstra求。dis[ ]数组表示最短路,dis2[ ]数组表示次短路,当有一个距离d2,介于dis和dis2之间时,更新次短路距离。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
#define inf 0x3f3f3f3f
const int N = 200010;
int n, m, cnt, head[N], dis[5005], dis2[5005];
struct Edge{int to, nxt, w;
}edge[N];
struct node{int id, w;node(){}node(int id, int w){this->id = id;this->w = w;}
};
bool operator < (const node a, const node b)
{return a.w > b.w;
}
void add(int a, int b, int w)
{edge[cnt].to = b;edge[cnt].w = w;edge[cnt].nxt = head[a];head[a] = cnt++;
}
void dijkstra()
{priority_queue<node> q;node tmp;q.push(node(1, 0));memset(dis, inf, sizeof dis);memset(dis2, inf, sizeof dis2);dis[1] = 0;while(!q.empty()){tmp = q.top();q.pop();int num = tmp.id;int d = tmp.w;if(dis2[num] < d) continue;//不是最短路,也不是次短路,忽略 for(int i = head[num]; i != -1; i = edge[i].nxt){int j = edge[i].to;int d2 = d + edge[i].w;if(dis[j] > d2)//更新最短路 {swap(dis[j], d2);q.push(node(j, dis[j]));}if(dis[j] < d2 && d2 < dis2[j])//跟新次短路 {dis2[j] = d2;q.push(node(j, dis2[j]));}}}
}
int main()
{while(~scanf("%d %d", &n, &m)){cnt = 0;memset(head, -1, sizeof head);while(m--){int a, b, w;scanf("%d %d %d", &a, &b, &w);add(a, b, w);add(b, a, w);}dijkstra();printf("%d\n", dis2[n]);}return 0;
}
POJ-3255--次短路相关推荐
- POJ 3255 次短路
题目描述 POJ 3255 思路 代码 参考文章 一个没有使用很多编程技巧的方法: 思路是如果有多条最短路,则次短路为最短路,否则次短路. 其中head 数组是用来保存点所对应的边索引(最后一条加入的 ...
- POJ 3165 最短路 floyd
POJ 3165 最短路 floyd http://poj.org/problem?id=3615 dp方程(f[i][j]>MAX(f[i][k],f[k][j])) f[i][j]=MA ...
- POJ 3255 Roadblocks 次短路
和Dijksta求最短路一样,只是要维护两个数组:最短路d1,次短路d2.然后更新的时候注意细节. //#pragma comment(linker, "/STACK:1024000000, ...
- POJ - 3255 Roadblocks(次短路)
题目链接:点击查看 题目大意:求次短路 题目分析:唉,限时训练的时候遇到的这个题,明明之前系统学习过次短路和次小生成树这个方面的知识的,可能是很长时间没 用,板子都忘掉了,不过还好,在考试的时候想到了 ...
- POJ 3255(迪杰斯特拉算法求次短路)
POJ3255,问题是求节点1到n的次短路. 在dijkstra求最短路算法的基础上进行变形,用两个数组分别记录源点到各节点最短路径和次短路径: 每次更新时,都将最短路的节点及可能成为次短路的节点pu ...
- Poj 3255(dijkstra求次短路)
题目传送门 详情见<挑战程序设计竞赛>P109 代码如下: #include <algorithm> #include <cstdio> #include < ...
- poj 1797(最短路变形)
题目链接:http://poj.org/problem?id=1797 思路:题目意思很简单,n个顶点,m条路,每条路上都有最大载重限制,问1->n最大载重量.其实就是一最短路的变形,定义wei ...
- poj 3255 Roadblocks (SPFA)
题目大意:在一个图上有许多个农场,有个人从1农场出发,到他的朋友n农场去,他不想走一条最短路径,这次他想换条路走,要你帮他找一条次短路径,次短路的定义是,比最短路径长度短(可能有多条),但是不会比其他 ...
- poj 1161 最短路构图
题目链接:http://poj.org/problem?id=1161 #include <cstdio> #include <cmath> #include <algo ...
- poj 2263 最短路变形——最小边的最大值
文章目录 本题:最短路变形--最小边的最大值 最短路变形--最大边的最小值 本题:最短路变形--最小边的最大值 最短路变形--最大边的最小值 poj2253
最新文章
- golang 中 map 转 struct
- java的empty_Java Stack empty()方法与示例
- 列表输出循环左移_python 列表推导式(经典代码)(21)
- 树链剖分 讲解+模板+习题
- asp.net下url参数含有中文读取后为乱码
- 与网络计算机相比,和通信网络相比,计算机网络最本质的功能是什么
- PS2022神经滤镜Neural Filters离线安装包(PS2022/PS2021)
- 基于ARM-Linux系统开发平台下嵌入式MP3的设计与实现
- windows关闭休眠
- OCUI界面设计:导航控制器
- 论文阅读:NEURAL MACHINE TRANSLATIONBY JOINTLY LEARNING TO ALIGN AND TRANSLATE
- vn.py源码解读(八、回测结果计算代码解析)
- (Modern Family S01E01) Part 9 PhilClair 射Luke、Haley和Dylan躺床上看电影
- halcon面阵相机标定矫正
- 如何查看磁盘是GUID格式(GPT)还是MBR格式?判别UEFI模式启动,还是Legacy模式启动?
- 实现运动目标检测(opencv3)(一)
- np.arange与np.linspace细微区别(数据溢出问题)
- 『2021语言与智能技术竞赛』-机器阅读理解任务基线系统详解
- LeetCode 题解随笔:动态规划(一)
- 【Qt】2D绘图之抗锯齿渲染
热门文章
- iPhone语音拍照怎么用?
- 编译error: no acceptable C compiler found in $PATH
- cocoapods最新踩坑以及更新
- dnspod java_使用dnspod遭遇的奇特问题以及背后的原因与临时解决方法
- IBMMQ-安装IBMMQ服务端7.5(windows)
- 开源中国广州源创会分享
- 【二分图最佳匹配】丘比特的烦恼
- 计算机专业就业推荐表中求职意愿,毕业生推荐表的求职意愿怎么填啊?
- SpringBoot中Hibernate-validator的使用
- 推荐系统实践读书笔记-08评分预测问题