Poj 3255(dijkstra求次短路)

简介: Poj 3255(dijkstra求次短路)

题目传送门

详情见《挑战程序设计竞赛》P109

代码如下:

#include <algorithm>
#include <cstdio>
#include <iostream>
#include <queue>
#define endl '\n'
using namespace std;
typedef long long ll;
const int N = 5500, INF = 0x3f3f3f3f;
typedef pair<int, int> PII;
struct edge
{
  int to;
  int cost;
};
vector<edge>g[N];
int m, n;
int d1[N];
int dis2[N];
void dijkstra()
{
  priority_queue<PII, vector<PII>, greater<PII> >q;
  fill(d1 + 1, d1 + 1 + n, INF);
  fill(dis2 + 1, dis2 + 1 + n, INF);
  d1[1] = 0;
  q.push({0, 1});
  while (q.size())
  {
    PII t = q.top();
    q.pop();
    int v = t.second, d = t.first;
    if (dis2[v] < d) continue;
    for (int i = 0; i < g[v].size(); i++)
    {
      edge x = g[v][i];
      int d2 = d + x.cost;
      if (d1[x.to] > d2)
      {
        swap(d1[x.to], d2);
        q.push({d1[x.to], x.to});
      }
      if (dis2[x.to] > d2 && d2 > d1[x.to])
      {
        dis2[x.to] = d2;
        q.push({dis2[x.to], x.to});
      }
    }
  }
}
int main()
{
  while (~scanf("%d%d", &n, &m))
  {
    for (int i = 1; i <= m; i++)
    {
      int x, y, z;
      cin >> x >> y >> z;
      g[x].push_back({y, z});
      g[y].push_back({x, z});
    }
    dijkstra();
    cout << dis2[n] << endl;
    return 0;
  }
}


目录
相关文章
|
监控 C#
55.c#:file类
55.c#:file类
256 1
|
JavaScript 定位技术
echarts 基础入门(下)
echarts 基础入门(下)
372 0
|
Python
获取文件夹文件
这是一个使用Python 3.10+的简单程序,依赖`NStudyPy`库,通过`PyFile.get_file_list()`函数获取指定文件夹及其子目录(可选)中的文件列表。核心函数`get_file_list()`接受路径和一个布尔值,决定是否递归搜索。如果路径不存在或不是目录,会抛出错误。返回值是包含所有文件路径的列表。
187 1
|
算法 安全 JavaScript
聊聊程序中的随机数
聊聊程序中的随机数
485 1
|
存储 前端开发 区块链
LP/DAPP单双币流动性质押挖矿开发程序,LP/DAPP单双币流动性质押挖矿系统开发实现技术原理及源码部署
 "Web3.0" is an improvement of "Web2.0". Under this environment, users do not need to create multiple identities on different centralized platforms, but can create a decentralized universal digital identity system to pass through various platforms.
LP/DAPP单双币流动性质押挖矿开发程序,LP/DAPP单双币流动性质押挖矿系统开发实现技术原理及源码部署
|
存储 C# 索引
C#索引器的实现、索引器和属性的异同对比,这些技能你get到了嘛?
C#索引器的实现、索引器和属性的异同对比,这些技能你get到了嘛?
616 0
C#索引器的实现、索引器和属性的异同对比,这些技能你get到了嘛?
|
缓存 运维 Java
Java并发JUC(java.util.concurrent)集合不安全
Java并发JUC(java.util.concurrent)集合不安全
Java并发JUC(java.util.concurrent)集合不安全
|
算法
【26. 字符串哈希】
**用到字符串的地方一般可以用KMP算法。用KMP算法的一般都可以用字符串哈希。代码更简单。**(特殊的哈希方式,字符串前缀哈希法) - 把字符串变成一个p进制数字(哈希值),实现不同的字符串映射到不同的数字。(`比较俩个区间字符串前缀是否相等就变成了比较俩个区间字符串哈希是否相同`) ### 核心 - `以一个K进制的角度,来吧字符串看成数字。`
267 0
|
NoSQL Java Spring
Java技术周刊第12期:编写高性能的Java代码需要注意的4个问题
Java的开发者们:云栖社区已有5000位Java开发者,发布了30000+Java文章(文章列表),沉淀了7000+的Java精品问答(问答列表)。 Java技术周刊将会为大家介绍最新的Java技术与动态、预告活动、最热问答、直播教程等,欢迎大家订阅Java技术周刊。
8662 0

热门文章

最新文章