前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序,
并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了.
核心代码:
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