链式前向星是一种以存边的方式储存图的数据结构,经常在各种竞赛中使用。
链式前向星储存的每个边由三个变量储存:,,。
其中,和代表这条边连接的两个点,代表这条边的权值,代表同一个的下一条边
我们一般用一个数组来储存每个点的最后输入的一条边的编号,每次添加新的边时将这个编号赋给这个边,然后再使用这个边的编号来更新。通过这个编号我们就可以通过每个边的来找到下一条边。
假如我们存储这样的一个图:

那么它在链式前向星中可以表示为:

我们可以写一个add函数来帮助我们添加边
1 | void add(const gg &from,const gg &to,const gg &v) |
对于链式前向星,我们经常使用这样的for循环来枚举边
1 | for(gg i=head[n];i;i=edge[i].nxt) //n为from边 |