title: 数据结构 | 图-2 | 图的存储结构 date: 2019-11-26 22:38:30 tags: 数据结构 邻接矩阵、邻接多重表 邻接表、逆邻接表、十字链表 数组表示法(邻接矩阵表示) 有向图的邻接矩阵表示: 无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第 i 行元素之和. 邻 ...
分类:
其他好文 时间:
2020-08-17 17:23:32
阅读次数:
62
邻接表储存结构 /*邻接表的边*/ typedef struct ArcNode { int adjvex; struct ArcNode *next; }ArcNode; /*邻接表的结点*/ typedef struct VNode { char date; ArcNode *firstarc; ...
分类:
编程语言 时间:
2020-07-28 17:32:12
阅读次数:
91
一、Dijkstra和spfa 以下示例均使用邻接表。 Dijkstra: void Dijkstra(int S) { priority_queue <pii> Q; while(!Q.empty()) Q.pop(); memset(dis, 0x7f, sizeof(dis); memset( ...
分类:
其他好文 时间:
2020-07-24 21:22:49
阅读次数:
84
1.图的初始条件[数组表示] //邻接表存储 int node[N]; struct Edge{ int to,next,value; }edges[M]; int flag; //矩阵存储 int dis[N][N]; 已知起点和终点的最短路 dijkstra 算法:选择最短边上的点直到所有点加入 ...
分类:
编程语言 时间:
2020-07-23 09:17:14
阅读次数:
85
一、技术总结 关于最短路径的问题,可以将问题化简,为两个部分,一个是单独使用Dijkstra求最短路径,然后再使用DFS进行第二判定条件再选出合适的路径; 其中推荐使用邻接表来存储图的信息,至于其他边权可以使用二维数组进行存储,如果点权直接使用结构体进行存储信息; 如果有多个判定条件,应该分别使用D ...
分类:
其他好文 时间:
2020-07-18 13:40:01
阅读次数:
55
前言: 对于稀疏图而言,前向星(邻接表)是必不可少的工具,感性理解前向星,写多了就背下来了 结构体写法: struct fdfdfd{int next,to,w;}a[1000];//定义 int head[1000],cnt; void addedge(int x,int y,int w){a[+ ...
分类:
其他好文 时间:
2020-07-17 22:14:06
阅读次数:
74
二分图最大匹配: 匈牙利算法 邻接表O(mn): #pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; const int maxn = 1010; const int maxm = 2e5; int n, m, ...
分类:
其他好文 时间:
2020-07-14 21:42:51
阅读次数:
67
首先java中也是有Pair类可以直接用的。在图或者相关问题中可以派上用场。 其次就是Dijkstra算法。这个算法我是看过,而且今天周赛这题(leetc5211)是挺容易想到该算法,但是我以前只看过没写过,导致我上午打开浏览器现学,结果算法学会了之后发现用邻接矩阵超内存限制,然后只好现学邻接表,学 ...
分类:
其他好文 时间:
2020-07-12 18:43:35
阅读次数:
67
双链表一个节点里面有两个指针,一个指向左边,一个指向右边 不定义头结点和尾结点了 令下标是0的点表示head 令下标是1的点表示tail 邻接表的知识:把每个点的所有邻边全部存下来 邻接表就是n个单链表 head[i]存储第i个点的邻边 1 #include <bits/stdc++.h> 2 us ...
分类:
其他好文 时间:
2020-07-11 19:14:03
阅读次数:
46
数组模拟单链表,图论的基础 单链表用的最多的是邻接表,邻接表是n个单链表,邻接表是树和图的存储方式 单链表 >> 邻接表 >> 存储树和图 单链表开始时是head指向空节点 插入元素后长这样 每个节点存储两个值 值:val 指针:next 然后用数组模拟就需要定义几个数组 e[N]:存储每个节点的v ...
分类:
其他好文 时间:
2020-07-11 17:43:21
阅读次数:
62