链式前向星

链式前向星是比邻接矩阵更快更节省空间的一种存图方式,而且代码也十分简洁,存图方式类似于链表。

先创建一个结构体和一个数组。

int head[MAX];

struct Edge{
    int to;
    int w;
    int next;
};

其中to表示第i条边的终点,w是第i个点的权值,next表示与第i条边拥有相同起点的上一个点的位子,head[u]记录以u为起点的最后一次出现的位置,head数组用于求next;

head数组一般初始化为-1;

核心存图代码为

void add(int u,int v,int w)
{
    edge[cnt].w=w;
    edge[cnt].to=v;
    edge[cnt].next=head[u];
    head[u]=cnt++;
}

我们在遍历与结点u相连的点的时候是这样的:

for(int i=head[u];~i;i=edge[i].next)

{

  int v=edge[i].to;//与u之间有边的点;

}

原文地址:https://www.cnblogs.com/DarkFireMater/p/7706320.html