dijkstra算法
文章平均质量分 53
xbb052
c++大学生
展开
-
作物杂交(spfa()算法)
输入的第 1 行包含 4 个整数 N,M,K,T,N 表示作物种类总数 (编号 1 至 N),M 表示初始拥有的作物种子类型数量,K 表示可以杂交的方案数,T 表示目标种子的编号。第 4 至 K+3 行,每行包含 3 个整数 A,B,C,表示第 A类作物和第 B 类作物杂交可以获得第 C� 类作物的种子。第 6 天至第 10 天,将编号 1 与编号 3 的作物杂交,得到编号 4 的作物种子。第 1 天至第 5 天,将编号 1 与编号 2 的作物杂交,得到编号 3 的作物种子。原创 2023-03-07 23:35:52 · 402 阅读 · 0 评论 -
最短距离(dijkstra)
接下来 M 行,每行包含三个整数 ai,bi,ci,表示第 i 条道路连接村庄 ai 和村庄 bi,长度是 ci。接下来 Q 行,每行包含一个整数 yk,表示询问编号为 yk 的村庄与其距离最近的商店之间的距离。然后给出 Q 个询问,第 k 个询问给出一个村庄的编号 yk,问该村庄距离最近的商店有多远?接下来 K 行,每行包含一个整数 xj,表示第 j 个有商店的村庄编号是 xj。道路,第 i 条道路连接村庄 ai 和村庄 bi,长度是 ci。共有 K 个村庄有商店,第 j 个有商店的村庄编号是 xj。原创 2023-03-06 13:41:15 · 321 阅读 · 0 评论 -
dijkstra求最短路(堆优化版本)
用优先队列模拟堆,并且是小根堆,先将已知的一号点和距离放入小根堆,每次取出堆顶,作为起点,寻找该点的出边也就是距离该点最近的点,判断 如果dist【j】>现在的distance+t到该点的边长权值,用取出的堆顶元素更新距离。堆优化版其实就是存储结构不同,这里因为是稀疏图,用邻接表的方式存储,相对于普通的邻接表母版,存储时多一个边长的权值就可以。请你求出 1号点到 n 号点的最短距离,如果无法从 1 号点走到 n号点,则输出 −1。输出一个整数,表示 1 号点到 n 号点的最短距离。看看代码,有注释详解。原创 2023-02-16 19:15:08 · 131 阅读 · 0 评论 -
朴素版dijkstra算法(acwing 849求最短路)
接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z�。请你求出 1号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。给定一个 n个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。类似贪心,每次取不在路径中的最近的点,判断将其放入是否可以更新最短距离。输出一个整数,表示 1 号点到 n� 号点的最短距离。图中涉及边长均不超过10000。如果路径不存在,则输出 −1。第一行包含整数 n 和 m。原创 2023-02-16 00:04:53 · 77 阅读 · 0 评论