摘要: 定义 在无向图中 生成一棵树,这棵树涵盖所有顶点,且权值之和最小 性质 边数=n-1 对于给定的图,最小生成树可能不唯一,但是权值之和一定唯一 每一个结点都是平等的(因为来源于图) O(v2),可以用堆优化为O(VlogV+E) ##代码 ###邻接矩阵 #include<algorithm> us 阅读全文
posted @ 2021-09-06 21:36 小帆敲代码 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 主要思想 多源最短路径 向[i][j]中插入点k 如果可以更新 就更新 代码 const int max_n = 30; const int INF = 0x3fffffff; int n,G[max_n][max_n]; int d[max_n][max_n];//i到j的最短距离 void Fl 阅读全文
posted @ 2021-09-06 19:36 小帆敲代码 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 优化的Bellman_Ford算法 因为Bellman_Ford的时间复杂度O(VE).当Bellman_Ford中的顶点被松弛时,与之相连的顶点才有可能被松弛。因此,可以维护一个队列。当队列中的v被松弛时,将v入队(对其的邻接点操作)。当某个结点v入队次数超过v-1说明,此时有负环。 O(kE)k 阅读全文
posted @ 2021-09-06 18:48 小帆敲代码 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 主要思想 一张图和一个源点,当最短路径确定时,这个图的最短路径树一定是确定的。且深度不超过V(<=V) 但是 如果超过V层还可以松弛(说明出现了负环) 注意点 初始化,比如vis数组的false 最小路径的INF 将源点的d[s]=0 代码 #include<vector> using namesp 阅读全文
posted @ 2021-09-06 15:55 小帆敲代码 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 定义 求解单元路径问题 邻接矩阵 O(V2) #include<stdio.h> #include<algorithm> using namespace std; //Dijkstra算法 //邻接矩阵 const int max_n = 30; const int INF = 0x3fffffff 阅读全文
posted @ 2021-09-06 15:01 小帆敲代码 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 主要区别 最主要的区别是memset是按照字节填充的。 fill 按照单元赋值,将一个区间的元素都赋予val值。函数参数:fill(vec.begin(), vec.end(), val); val为将要替换的值。 #include <algorithm> fill(vec.begin(), vec 阅读全文
posted @ 2021-09-06 07:59 小帆敲代码 阅读(152) 评论(0) 推荐(0) 编辑