首页 > 其他分享 >【模板】单源最短路径(Dijkstra + 堆优化)

【模板】单源最短路径(Dijkstra + 堆优化)

时间:2024-06-08 18:21:43浏览次数:26  
标签:tmp MAXX val int 单源 Dijkstra cnt 模板 dis

#include <iostream>
#include <queue>
using namespace std;
const int inf = 2147483647;
const int MAXX = 2e5 + 11;
int n,m,s,cnt;
int dis[MAXX];
int to[MAXX],nxt[MAXX],val[MAXX],h[MAXX];
bool vis[MAXX];
struct node{
    int v,w;
    friend bool operator < (node a,node b){
        return a.w > b.w;
    }
} tmp;
priority_queue <node> q;
void add(int u,int v,int w){
    cnt ++;
    to[cnt] = v;
    val[cnt] = w;
    nxt[cnt] = h[u];
    h[u] = cnt;
}
void dijkstra(){
    for (int i = 1;i <= n;i ++){
        dis[i] = inf;
    }
    dis[s] = 0;
    tmp.v = s,tmp.w = 0;
    q.push(tmp);
    while(!q.empty()){
        int u = q.top().v;
        q.pop();
        if (vis[u]){
            continue;
        }
        vis[u] = 1;
        for (int i = h[u];i;i = nxt[i]){
            if (dis[to[i]] > (long long)dis[u] + val[i]){
                dis[to[i]] = dis[u] + val[i];
                tmp.w = dis[to[i]];
                tmp.v = to[i];
                q.push(tmp);
            }
        }
    }
}
signed main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    cin >> n >> m >> s;
    for (int i  = 1,u,v,w;i <= m;i ++){
        cin >> u >> v >> w;
        add(u,v,w);
    }
    dijkstra();
    for (int i = 1;i <= n;i ++){
        cout << dis[i] << " ";
    }
    return 0;
}

标签:tmp,MAXX,val,int,单源,Dijkstra,cnt,模板,dis
From: https://www.cnblogs.com/Xssion37-XY/p/18238837

相关文章

  • 【C++练级之路】【Lv.23】C++11——可变参数模板、lambda表达式和函数包装器
    快乐的流畅:个人主页个人专栏:《算法神殿》《数据结构世界》《进击的C++》远方有一堆篝火,在为久候之人燃烧!文章目录一、可变参数模板1.1参数包的概念1.2参数包的展开1.3emplace系列二、lambda表达式2.1lambda的格式2.2捕捉列表2.3lambda的原理2.4......
  • vue + springboot 实现Excel模板文件下载
    1、后端实现1.创建用于映射模板的实体类@DatapublicclassSysUserTo{@Pattern(regexp="^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$",message="邮箱格式有误")@Size(max=50,message="邮箱超出50长度&q......
  • c++ 静态成员的初始化 友元模板
     来自:https://www.cnblogs.com/fre2technic/archive/2011/03/25/1995044.html 我们定义如下类://A.hclass A{private:    static const int m = 5;    static int n;    static vector<int> buf;};其中包含三个私有的静态类成员,C++规定const静态......
  • C++ 模板
    一.非类型模板参数模板参数分为类型形参与非类型形参。类型形参:类作为模板参数,typename/classT(T就是类型形参)非类型形参:内置类型作为模板参数,intdoublechar...(在C++20前只有int可以传)这样我们就可以随便定义栈的大小。注:因为n是常量所以是不能修改的。......
  • 自媒体必用的50 个最佳 ChatGPT 社交媒体帖子提示prompt通用模板教程
    在这个信息爆炸的时代,社交媒体已经成为我们生活中不可或缺的一部分。无论是品牌宣传、个人展示,还是日常交流,我们都离不开它。然而,要在众多信息中脱颖而出,吸引大家的关注并不容易。这时候,ChatGPT这样的AI写作工具就显得特别有用了。ChatGPT不仅能帮你快速生成高质量的内容,还能给你......
  • [DP] LCS例题 Luogu P1439 【模板】最长公共子序列 Luogu P4303 基因匹配
    LuoguP1439【模板】最长公共子序列【模板】最长公共子序列题目描述给出\(1,2,\ldots,n\)的两个排列\(P_1\)和\(P_2\),求它们的最长公共子序列。输入格式第一行是一个数\(n\)。接下来两行,每行为\(n\)个数,为自然数\(1,2,\ldots,n\)的一个排列。输出格式一个数,即......
  • 函数重载和模板的区别与联系
    函数重载和模板的区别与联系函数重载(overloaded):定义函数名相同而形参列表(个数,类别)不同的多个函数,这些函数被称为重载函数,重载函数通常执行的操作非常类似,如打印不同的输入对象。调用函数时编译器根据实参的类型确定调用哪个重载函数。函数模板(template):实际上是建立一......
  • HC32F4A0PITB创建工程模板
    使用芯片第一步网上搜索如何创建工程模板,如何下载和查看资料!!!本教程使用的开发板是【立创·天空星HC32F4A0PITB开发板】网址:https://lckfb.com/project/detail/lckfb-lspi-skystar-hc32f4a0pitb-lite?param=baseInfo开源原理图和PCB,资料免费!!!!感谢立创开发板团队的开源!!一、......
  • FlowUs息流模版变现:创作模板与内容生产的新天地
    在数字化时代,内容创作和管理的需求日益增长。FlowUs作为一个多功能的协作平台,不仅提供了强大的内容创作和管理工具,还为用户开辟了通过创作模板和生产内容赚取收入的新途径。本文将详细介绍FlowUs平台的核心功能、创作模板的特点以及如何通过该平台实现稳定收入。FlowUs平台简......
  • jvm参数模板
    8g物理内存-Xms4g-Xmx4g-Xmn2g-Xss1m-XX:MetaspaceSize=128m-XX:MaxMetaspaceSize=256m-XX:SurvivorRatio=8-XX:MaxDirectMemorySize=512m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=70-XX:+UseCMSInitiatingOccupancyOnly-XX:+UseCMSCompactAtFullC......