图论
无
SuipiX
是日已过,命亦随减;如少水鱼,斯有何乐?当勤精进,如救头燃!但念无常,慎勿放逸。
展开
-
哈希-普通哈希 字符串哈希 tired字典树
字典树:char str[i];把字符串中的每个字母变成一个 haxi值像树一样的存起来一连串的字符一般哈希 : int x;①拉链法:是把一个数字变成一个 hashe值 像邻接表一样挂起来②开放寻址法:就是直接把数字转化为hashe值后放存放在一个简单的数组里字符串哈希:char str[i];一个字符串变成一个 haxi值 存放在一个数组里字符串哈希模板例题:字符串哈希下题解中的P一般取值131、13331mod一般取一个素数,有时候错了就多改大几次,可正确的取值不止.原创 2021-06-22 14:36:04 · 350 阅读 · 1 评论 -
Tired树(字典树)理解与例题
例题:Trie字符串统计题解+模板int son[N][26], cnt[N], idx; //idx 当前用到了的结点的下标 // 0号点既是根节点,又是空节点// son[][]存储树中每个节点的子节点// cnt[]存储以每个节点结尾的单词数量// 插入一个字符串void insert(char *str) { int p = 0; for (int i = 0; str[i]; i ++ ) { int u = str[i] - 'a';原创 2021-06-18 15:52:11 · 253 阅读 · 0 评论 -
并查集的理解与例题
并查集的理解:https://b23.tv/JnhV80并查集由一个数组、两个函数组成① fa[ ]:记录父亲结点的数组② find:查找函数③ unionm:合并函数代码:原创 2021-06-17 09:41:18 · 140 阅读 · 0 评论 -
关键路径(含拓扑序列)
关键路径是以拓扑序列为基础的用来解决类似:事件的最早发生时间事件的最晚发生时间活动的最早发生时间活动的最晚发生时间(事件是结点 活动是边)例题:p1113杂物问题:可以用 dijkstra算法求最短距离来算来代替???答 :一般不行,因为它的边代表的距离不能为负数。 但是上面那个题目好像可以用..先理解:拓扑序列后理解:关键路径...原创 2021-06-02 20:49:28 · 327 阅读 · 0 评论 -
图的存储 与 DFS BFS遍历
图的储存结构1.邻接矩阵 P179未完待续2.邻接表 P181typedef struct node//表结点 { int adivex;//邻接域点 struct node *next;//指向下一个邻接点的指针域 //若要表示边上的信息,则要添加一个数据域 info }EdgeNode ;typedef struct vnode //表头结点 { VertexType vertex; //顶点域 EdgeNode * firstedge; //表头指针 }Ve原创 2021-05-10 21:41:01 · 235 阅读 · 0 评论 -
Kruskal与Prim算法生成最小树
点击:Kruskal算法的理解点击:Prim算法的理解原创 2021-05-25 20:28:24 · 359 阅读 · 1 评论 -
dijkstra算法O(n^2)单源点到其余各个顶点的最短距离
有向无向用法一样点击:dijkstra算法的理解代码:#define INF 32767; // 表示无穷大 void dijkstra(MGraph *G, int v) // G为指向图的邻接矩阵的指针 v为原点的序号 {****************************************************************************************初始化 int dist[MaxVertexNum], path[MaxVertexNum];原创 2021-05-25 20:10:56 · 159 阅读 · 0 评论 -
Floyd算法O(n^3)求解带权有向图中任意两顶点间的最短路径
点击:Floyd算法解析就是我们要先把A数组和path数组填好然后就用这个: for ( k=0; k<N; k++ ) //N是顶点数量 for ( i=0; i<N; i++ ) for ( j=0; j<N; j++ ) if ( A[i][j] > A[i][k] + A[k][j] ) { A[i][j] = A[i][k] + A[k][j]; path[i][j] = path[k][j]; }...原创 2021-05-24 20:51:51 · 307 阅读 · 0 评论 -
SPFA算法求固定点到其它点 最短 最长 路程问题
点击:理解请参考例题:https://www.luogu.com.cn/problem/P1807如果求最短路径 :f[v]=max(f[v],f[u]+mp[u][i].n);f [ ]数组你要先初始化 无穷大如果求最长路径: f[v]=min(f[v],f[u]+mp[u][i].n);f [ ]数组你要先初始化 无穷小还有就是这个spfa算法跟 关键路径(拓扑) 挺像的 就稍微改改例题正确代码://思路 建立两个表 位置相同 存边的长度#include<bits/stdc++原创 2021-06-15 20:18:40 · 266 阅读 · 0 评论