图的基本概念:
图就是N个顶点,M条边组成的集合
图有有向图和无向图
如果给图中每条边规定一个方向,则得到的图是有向图,其边为有向边。在有向图中,与一个点相关联的边有出边和入边之分,而与一个有向边关联的两个点也有始点和终点之分
边没有方向的图称为无向图
我们采用图的邻接矩阵来存储图(当然还有其他方法)
在存储无向图时,需要注意的是:
存储的边,需要有两个,例如:存储(a,b)边时,需要在图的邻接矩阵中,存储e[a][b]和e[b][a]两条边。以表示这是一个无向的边。
无向图存储于邻接矩阵中,会使得这个矩阵是对称的
在存储有向图时,就只需要简单的存储一边就好了。
我们规定,点到点自身的距离为0
初始化时,点到点之间(非自身)的距离为(无穷)
一堆点,点点之间有通路。
要找到一个点到一个点的最小距离
采用dfs方法
#include<stdio.h>
int min = 999999999;
int book[101]; //标记点是否已遍历
int n;
int e[101][101]; //存储图
void dfs(int cur, int dis) //cur表示当前所处点,dis表示已经走过的路程