Gracekite's Homepage

Back

题目描述#

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

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

输入格式#

第一行为三个正整数 。 第二行起 行,每行三个非负整数 ,表示从 到 有一条权值为 的有向边。

输出格式#

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

样例#

样例输入 #1#

4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
plaintext

样例输出 #1#

0 2 4 3
plaintext

提示#

;

;

;

;

,

。

算法分析#

使用堆优化(优先队列)

struct Qnode{
    int w;
    int po;
    inline bool operator <(const Qnode &x)const{
        return w>x.w;
    }
};
priority_queue<Qnode>q;
cpp

初始化dis为极大值

for(int i = 1;i<=n;i++) dis[i]=2147483647;
    dis[f]=0;
cpp

主体

Model#

Dijkstra迪杰斯特拉算法
https://betteroier.github.io/blog/dijkstra%E8%BF%AA%E6%9D%B0%E6%96%AF%E7%89%B9%E6%8B%89%E7%AE%97%E6%B3%95
Author Yuxuan Zheng
Published at August 3, 2022