- 分享
- 2022-07-20 17:12:17 @
链式前向星使用 \(2\) 个数组:\(\text{head}\) 和 \(\text{e}\)。表头数组 \(\text{head}\),称之为点集;\(\text{e}\)数组为边集。
空间复杂度:\(\Theta(|v|+|E|)\)
优点:节省节点、代码简单、常数小,能快速找到某个节点的所有子节点。
struct
{
int v,w,nxt;
} e[MAXN];
int head[MAXN],nE;//nE是当前分配了多少
inline void AddEdge(int &u,int &v,int &w)
{
e[++nE].nxt=head[u];
head[u]=nE;
e[nE].v=v;
e[nE].w=w;
}
for(int i=1; i<=n; i++) //遍历所有的边
{
for(int j=head[i]; j; j=e[j].nxt)
printf("%d ",e[j].v);
printf("\n");
}
0 条评论
目前还没有评论...