"""
图论算法
    在程序中表示图的方法
    无向图有 n*(n-1)/2条边
    有向图有 n*(n-1)
    二维数组
        x[i][j] 如果节点i和j之间有关联的边，那么ij的值为1
        这样表示的图中间的斜线都为0，上下成为了相等的复制，浪费了空间，改进的话可以使用
        一个单数组来进行储存  对应的数组的值的下标是 (i*(i+1)/2 + j)
        i*(i+1)/2是上三角的大小
    矩阵的缺点
        当图中有很多的节点，但是只有很少的边，这样就会出现大量的数据冗余
    深度优先搜索
    广度优先搜索
    简单路径
        从一个顶点到另外一个顶点之间通过的路径和顶点都是不重复的
    回路
        起点等于终点的路径
    连通分量 无向图的极大联通子图
        极大顶点数   增加一个顶点这个图就不连通了
        极大边数    包含子图的所有顶点和所有边
    有向图
        强连通
            有向图中定点之间存在双向路径就是强连通
        强连通图
            所有顶点都是强连通的



"""