链式前向星

前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序,

并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了.

核心代码:

struct Edge{
    int next;
    int  to;
    int  w;
}edge[maxn];
void add(int a,int b,int c) 
{
    nxt[++idx]=head[a]; //idx为边的编号,++idx是将新边赋予编号,将新边的nxt指向原来head[a]指向的边的编号,这样能保证原来边的编号不失去
    to[idx]=b; //将新边的to赋值成为b,表示这条边指向b
    val[idx]=c; //将新边的val赋值成为c,表示这条边的边权为c
    head[a]=idx; //让head[a]指向当前边的编号,表示这条边是从a来的
}

转载于:https://blog.csdn.net/acdreamers/article/details/16902023

原文地址:https://www.cnblogs.com/angelliu/p/13441188.html