链式前向星
链式前向星是比邻接矩阵更快更节省空间的一种存图方式,而且代码也十分简洁,存图方式类似于链表。
先创建一个结构体和一个数组。
int head[MAX];
struct Edge{
int to;
int w;
int next;
};
其中to表示第i条边的终点,w是第i个点的权值,next表示与第i条边拥有相同起点的上一个点的位子,head[u]记录以u为起点的最后一次出现的位置,head数组用于求next;
head数组一般初始化为-1;
核心存图代码为
void add(int u,int v,int w)
{
edge[cnt].w=w;
edge[cnt].to=v;
edge[cnt].next=head[u];
head[u]=cnt++;
}
我们在遍历与结点u相连的点的时候是这样的:
for(int i=head[u];~i;i=edge[i].next)
{
int v=edge[i].to;//与u之间有边的点;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步