链式前向星存图 spfa

本文介绍了链式前向星存图的原理,它比邻接矩阵更节省空间,通过next属性将起点相同的边关联。接着详细讲解了SPFA算法,用于求解单源最短路径问题,包括核心思想、所需数据结构和具体实现过程。SPFA与BFS的区别在于可能需要多次将同一节点入队进行松弛操作。
摘要由CSDN通过智能技术生成

1.链式前向星存图

链式前向星存图相对邻接矩阵存图 能更有效的利用空间。

包含两个结构

struct node{
	int to,val,next;
}e[M];

/*e[i]为第i条边的信息
  e[i].to 为该边的终点
  e[i].val 为该边的边权
  e[i].next 为以该边起点为起点,最近存入的边的编号 
*/

st[N] //st[i] 以i为起点,最近存入的边的编号  
 

链式前向星存图的姿势如下:

int tot = 0;
void add(int u,int v,int w){
	e[++tot].to = v;//存终点 
	e[tot].val = w;//存边权 
	e[tot].next = st[u];//存最近存入边编号 
	st[u] = tot;//更新st数组 
} 

那么就利用了 3 * M + N的空间存入了整个图的边的信息,并且利用struct中next的信息,将起点相同的边关联到了一起。

在遍历(如以cur为起点)的边的时候,只需从st[cur]出发,通过e[i].next不断转移到下一条边,直到e[i].next = -1(初始值)为止。代码如下:

for(int i = st[cur];i != -1;i = e[i].next) 


spfa:

spfa是求单源最短路的一种方法,能求从某个起点出发,到图中各点的最短距离(最长距离)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值