poj3255 次短路模板

原创 2018年04月17日 17:43:23
#include <algorithm>
#include <cstdio>
#include <cstring>
#define inf 0x3f3f3f3f
#include <vector>
#include <queue>
using namespace std;
typedef pair<int, int>pii;

const int maxn = 100005;
int dis1[maxn];
int dis2[maxn];
int n, r;
struct edge {
    int to, w;
    edge(int a, int b): to(a), w(b) {};
};
vector<edge>G[maxn];
void dij() {
    memset(dis1, inf, sizeof(dis1));
    memset(dis2, inf, sizeof(dis2));
    priority_queue<pii, vector<pii>, greater<pii> >q;
    dis1[1] = 0;
    q.push(pii(dis1[1], 1));
    while(!q.empty()) {
        int v = q.top().second;
        int d = q.top().first;
        q.pop();
        if(dis2[v] < d)  continue;//buyuyao
        for(int i = 0; i < G[v].size(); i++) {
            edge &e = G[v][i]; //v是最近节点
            int d2 = e.w + d; //d2是经过最近点的更新值
            if(d2 < dis1[e.to]) {
                swap(d2, dis1[e.to]);
                q.push(pii(dis1[e.to], e.to));
            }
            if(dis2[e.to] > d2&&dis1[e.to]<d2) { //不需要多判
                dis2[e.to] = d2;
                q.push(pii(dis2[e.to], e.to));
            }
        }
    }
}
int main() {
    scanf("%d%d", &n, &r);
    for(int i = 1; i <= r; i++) {
        int u, v, w;
        scanf("%d%d%d", &u, &v, &w);
        G[u].push_back(edge(v, w));
        G[v].push_back(edge(u, w));
    }
    dij();
    printf("%d\n", dis2[n]);
    return 0;
}
版权声明:希望能在自己成长的道路上帮到更多的人,欢迎各位评论交流 https://blog.csdn.net/yiqzq/article/details/79978201

poj3255次短路算法

Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10539   Ac...
  • yuanjunlai141
  • yuanjunlai141
  • 2015-12-17 21:11:34
  • 1638

poj3255 次短路Dijkstra

挑战程序设计竞赛上的题目。 题意:给一个边权都是正的无向图,求1到n点的次短路。 分析: 先说一下标准的dijkstra+heap的,实际上以前写的程序都是在完整循环一次之后会确定从s到这个点的最短路...
  • NGccc
  • NGccc
  • 2015-04-15 16:54:00
  • 670

Poj3255 Roadblocks SPFA算法解“次短路”问题 代码&注释

题目大意:给定一个无向图,图顶点数N≤5000,边数R≤100000,求顶点1到顶点N的“次短路”。 注意: 多次经过同一顶点或同一条边的路径是被允许的(允许有环的路径存在)。“次短路“指...
  • lygpkulxy
  • lygpkulxy
  • 2016-09-03 14:22:08
  • 290

POJ 3255 Roadblocks (次短路径 + Dijkstra算法)

Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7982   A...
  • u013446688
  • u013446688
  • 2015-01-29 12:15:02
  • 1181

Poj 3255(Dijkstra求次短路)

Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5564   Acc...
  • Wiking__acm
  • Wiking__acm
  • 2013-08-09 21:12:18
  • 710

POJ 3255 Roadblocks——次短路

这个博主写得很清楚 #include #include #include #include #include #include using namespace std; typedef ...
  • hao_zong_yin
  • hao_zong_yin
  • 2018-02-04 10:55:42
  • 59

poj3255 Roadblocks--次短路spfa

原题链接:http://poj.org/problem?id=3255 题意:n个点,标号为1到n,m条路,u,v,len,表示u与v之间路长为len,求1到n第二短路长,题目保证存在第二短路径。...
  • LaoJiu_
  • LaoJiu_
  • 2016-10-01 13:14:55
  • 433

poj 3255 Roadblocks(无向图次短路 SPFA)

Language: Default Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Sub...
  • u011699990
  • u011699990
  • 2015-05-16 15:22:48
  • 807

POJ3255次短路模板

模板级次短路问题 与最短路的区别在于,优先队列保存的对象不同, 队列中同时储存了 1:到某个点u的最短路+u到v的边 2:到某个点u的次短路+u到v的边 用这两种情况刷新最短路和次短路,所以temp=...
  • qq_34927456
  • qq_34927456
  • 2017-01-23 22:53:11
  • 207

POJ3255(次短路)

题目链接:点击打开链接 解题思路: 按照Dijkstra思想做的次短路,第一次用邻接表,注意题中是双向边并且节点的下标要分别-1. 完整代码: #include #inclu...
  • u013447865
  • u013447865
  • 2015-03-27 20:54:42
  • 974
收藏助手
不良信息举报
您举报文章:poj3255 次短路模板
举报原因:
原因补充:

(最多只允许输入30个字)