图论是计机算算法中很重要的一种思想,很多的实际问题都可以通过图论建模来解决。本文先介绍基本的图论相关知识,为后续讲解具体的图论算法做铺垫,如最大匹配,最小生成树,最短路,网络流,差分约束,拓扑序等。
1 图定义
图的表示:G=(V,E), V=(v|v为图中的顶点), E=(e|e为图中的边)
如下图:点集V:a,b,c,d,e,边集E:1,2,3,4,5
2 分类
可分为有向图和无向图
3 存储
分邻接矩阵和邻接表:
-
邻接矩阵,一般用二维数组实现,对于不带权的图,也可以用n(row)个m(column)位二进制数来表示;
空间由点决定,适用点少、边多的稠密图 -
邻接表,一般用链表实现;
空间由边决定,适用边少、点多的稀疏图
如上图中,无向图用邻接矩阵存储,有向图用邻接表存储。
变量定义
// 邻接矩阵
int map[100][100];
// 邻接表
struct