
图
终把泪酿酒~
艰苦小白的编程之路
展开
-
prim,适合稠密图,顶点少,边多(c语言)
/* * 用prim算法弄最小生成树,每次一个点都会遍历所有点,找出,两点距离最短的情况 * 再改变节点的入度和最小值 */ #include #include #include #define INFINITY 1000 struct{ int adjvex; int lowcost; }closedge[31]; typedef struct { int vex原创 2018-01-15 15:14:37 · 1243 阅读 · 0 评论 -
kruskal算法,适合稀疏图,顶点多,边少(c语言)
kruskal算法的一点就是不能形成环路,而且是从排列好的边集合依次选出最小的边,每次选出的顶点都要放在同一个边集合中,之后在顶点集合选两个顶点的边,要求这两个顶点不能在边集合中,这样才能保障不形成环路。 一、链表表示 #include #include /* kruskal,最小生成树,利用链表,并查集的知识 */ typedef struct{ int bef;原创 2018-01-15 15:08:38 · 1206 阅读 · 0 评论 -
Floyd 所有路径的最短距离(c语言)
#include #define MAX 6 int n = MAX; int cost[][MAX] = { { 0, 50, 10,1000, 45,1000}, {1000, 0, 15,1000, 10,1000}, { 20,1000, 0, 15,1000,1000}, {1000, 20,1000, 0, 35,10原创 2017-12-04 21:24:51 · 481 阅读 · 0 评论 -
Dijkstra单源最短路径,适合稠密图,顶点少,边多(c语言)
思路: ①随意选择一个点v,然后用distance数组记录起始点v到所有点的距离 ②然后在distance数组中找到起始点v到哪一个点的距离最短,以这个点u为中介,found[u]=1,证明集合中已经有这个点,证明该点走过 ③使用choose函数通过循环,可以知道哪一个点到起始点最短,返回该点的索引u ④然后再以u这个点开始,去没有走过的点w(found数组中没有标记为1的原创 2017-12-04 20:47:41 · 1371 阅读 · 2 评论