AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 校园
  • 应用
  • 文章
    • 题解
    • 分享
    • 问答
  • 吐槽
  • 登录/注册

Dijkstra

作者: 作者的头像   稳重 ,  2022-06-23 18:38:16 ,  所有人可见 ,  阅读 31


-1


int g[N][N]; // 稠密图用邻接矩阵存
int dist[N]; // 存1号点到N的最短距离
bool st[N]; // 判断点N是否搜索过

int dijkstra()
{
memset(dist, 0x3f, sizeof dist);
dist[1] = 0;

for (int i = 0; i < n; i ++ ) 
{
    int t = -1;
    for (int j = 1; j <= n; j ++ )
        if (!st[j] && (t == -1 || dist[t] > dist[j]))
            t = j; // t存的是当前还没定好最短距离的点中距离最近的点

    st[t]=1;

    for (int j = 1; j <= n; j ++ )
        dist[j] = min(dist[j], dist[t] + g[t][j]);

}

if (dist[n] == 0x3f3f3f3f) return -1;
return dist[n];

}

0 评论

你确定删除吗?

© 2018-2022 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息