【模板】单源最短路径(标准版)

P4779 【模板】单源最短路径(标准版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目背景

2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路。

然后呢?

100 \rightarrow 6010060;

\text{Ag} \rightarrow \text{Cu}AgCu;

最终,他因此没能与理想的大学达成契约。

小 F 衷心祝愿大家不再重蹈覆辙。

题目描述

给定一个 nn 个点,mm 条有向边的带非负权图,请你计算从 ss 出发,到每个点的距离。

数据保证你能从 ss 出发到任意点。

输入格式

第一行为三个正整数 n, m, sn,m,s。 第二行起 mm 行,每行三个非负整数 u_i, v_i, w_iui,vi,wi,表示从 u_iui 到 v_ivi 有一条权值为 w_iwi 的有向边。

输出格式

输出一行 nn 个空格分隔的非负整数,表示 ss 到每个点的距离。

输入输出样例

输入 #1
4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
输出 #1
0 2 4 3

说明/提示

样例解释请参考 数据随机的模板题

1 \leq n \leq 10^51n105;

1 \leq m \leq 2\times 10^51m2×105;

s = 1s=1;

1 \leq u_i, v_i\leq n1ui,vin;

0 \leq w_i \leq 10 ^ 90wi109,

0 \leq \sum w_i \leq 10 ^ 90wi109。

本题数据可能会持续更新,但不会重测,望周知。

2018.09.04 数据更新 from @zzq

做做模板题图一乐哈哈

裸的dijkstra

复制代码
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
typedef pair<int,int> PAII;
const int N=1e7+10;
int h[N],e[N],ne[N],idx,dist[N],w[N];
bool st[N];
int n,m,s;
void add(int a,int b,int c)
{
    e[idx]=b;
    w[idx]=c;
    ne[idx]=h[a];
    h[a]=idx++;
}
void dijkstra(int x){
    priority_queue<PAII,vector<PAII>,greater<PAII> >heap;
    memset(dist,0x3f,sizeof(dist));
    dist[x]=0;
    heap.push({0,x});
    while(heap.size())
    {
        auto t=heap.top();
        heap.pop();
        int dis=t.first,ver=t.second;
        if(st[ver]) continue;
        else st[ver]=true;
        for(int i=h[ver];i!=-1;i=ne[i])
        {
            int j=e[i];
            if(dist[j]>dist[ver]+w[i])
            {
                dist[j]=dist[ver]+w[i];
                if(!st[j])
                {
                    heap.push({dist[j],j});
                }
            }
        }
    }
}
int main(){
    memset(h,-1,sizeof(h));
    cin>>n>>m>>s;
    while(m--)
    {
        int a,b,c;
        cin>>a>>b>>c;
        add(a,b,c);
    }
    dijkstra(s);
    for(int i=1;i<=n;i++)
        cout<<dist[i]<<" ";
    return 0;
}
复制代码

 

posted @   小志61314  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示