图
简单来说:用边把一些点连接起来叫图
有向图:边有方向的图,比如边a–>b,只能由a到b,不 能由b到a。
无向图:边没有方向的图,连接点a和b,那么a和b可以相互到达。
结点的度:无向图中与结点相连的边的数目。
结点的入度:在有向图中,以这个结点为终点的有向边 的数目。
结点的出度:在有向图中,以这个结点为起点的有向边 的数目。
联通图:图中任意两点能互相到达的图。
完全图:一个n个点的完全无向图含有n*(n-1)/2条边, 一个n个点的完全有向图含有n*(n-1)条边
回路:起点和终点相同的路径,也叫:环。
图的深度优先搜索。
图的广度优先搜索。
图的存储
对于线性结构可以用一维数组来存储,那么非 线性结果应该如何来存储呢。
比如左边的结构,我们可以也可以 用a[4]={1,2,3,4}来存储,但是这样 存储有歧义,只能表示有四个点,但是 无法表示有哪些边。
对于任意第i个点,他可能会和任意一个点j 相连,也可能不相连。为了清楚的表示出i点到 底和哪些点相连,我们可以用mp[i][j]表示点i 是否和点j相连,0表示不相连,1表示相连。
邻接矩阵
在普及组比赛中,因为图中点和边的数量较少, 一般采用邻接矩阵的办法来存储树和图,mp[i][j] 表示i点和j点是否有边相连,初始时mp数组为空, 当有一条i->j的边时,此时mp[i][j]=1,如果是无 向图,j点同样也可以到达i点,还需要mp[j][i]=1。