链式前向星存边

这边文章是基于网上流传最广的改编,改了点内容方便更好的理解。
在这里插入图片描述
我们输入边的顺序为:
1 2,2 3,3 4,1 3,4 1,1 5,4 5

void add(int u,int v,int w)
{
    edge[cnt].w = w;//记录权值
    edge[cnt].to = v;//第cnt条边的终点
    edge[cnt].next = head[u];//与第cnt条边同起点的下一条边位置
    head[u] = cnt++;//保存的是以u为起点的所有边中编号最大的那个
}

按上图模拟一下
add(1,2,w1)->edge[0].to = 2; edge[0].next = head[1]=-1;head[1]=0;
add(2,3,w2)->edge[1].to = 3; edge[1].next = head[2]=-1;head[2]=1;
add(3,4,w3)->edge[2].to = 4; edge[2].next = head[3]=-1;head[3]=2;
add(1,3,w4)->edge[3].to = 3; edge[3].next = head[1]=0; head[4]=3;
后面就不赘述了
edge[4].to = 1; edge[4].next = -1; head[4] = 4;
edge[5].to = 5; edge[5].next = 3; head[1] = 5;
edge[6].to = 5; edge[6].next = 4; head[4] = 6;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值