最短路径树(Shortest Path Tree,SPT)

 


什么是SPT?

  • SPT是原图的一颗生成树。具有生成树的所有性质。
  • 从根节点到任意节点的距离与其在原图的最短路距离相等。

如何求出SPT

结合单源最短路径算法。这里使用堆优化Dijkstra.
记录一个prei表示i上一条边。这样只要有根就可以遍历出整棵树。

void dij(void)
{
    priority_queue <pair<int,int>,vector <pair<int,int> >,greater<pair<int,int> > > q;
    for(int i = 1; i <= n; i++) dis[i] = inf,vis[i] = 0;
    dis[1] = 0;
    q.push(make_pair(0,1));
    while(!q.empty())
    {
        int x = q.top().second; q.pop();
        if(vis[x]) continue;
        vis[x] = 1;
        for(int i = Head[x]; i ; i = E[i].nxt)
        {
            int v = E[i].v;
            if(dis[v] >= dis[x] + E[i].w) // *
            {
                dis[v] = dis[x] + E[i].w;
                pre[v] = i;
                q.push(make_pair(dis[v],v));
            }
        }
    }
    return;
}

时间复杂度:O((n+m)logn)

Problems

Simple

posted @   luyiming123  阅读(1095)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示