链式前向星备忘

链式前向星备忘

自以为比较好理解的一种写法

初始化

struct edge{
    int v,w,nxt; //e[x].nxt 连接着节点x的下一条边编号
} e[MAXN];
int head[MAXN],ecnt=0; //head[x] 节点x最后连上的边编号

建边

inline void add_edge(int u, int v, int w){
    e[++ecnt].v=v;
    e[ecnt].w=w;
    e[ecnt].nxt=head[u];
    head[u]=ecnt; //head[x] 更新节点x最后连上的边编号
}

遍历节点\(x​\)连的边

for(int i=head[x];i!=0;i=e[i].nxt) //当head[x]=0时已经遍历完所有边了

参考

链式前向星基本原理

猜你喜欢

转载自www.cnblogs.com/santiego/p/10704742.html