链式前向星存图
head和next的作用
其实这俩本质是一样的,next就是把一个又一个过气(?)head自个儿存起来以便查询。
模拟一遍就懂了的东西。
4⃣️的,地瓜就是一个爱手写的孩子……
看下模拟过程基本就很容易理解
···
代码
初始化+结构体:
#define maxn 10000;//题目给的n最大值
#define maxm 1000;//m最大值
int n,m;//n个点,m条边;
int cnt;//边的编号;
head[maxn];
struct Edge{
int to;
int w;
int next;
}e[2*maxm+5];//无向图,有向图应该[maxm+5]就够了
存边:
void addedge(int u,int v,int w){
e[cnt].to=v;
e[cnt].w=w;
e[cnt].next=head[u];//此时head中的编号给next了;
head[u]=cnt++;//接收新的值
};
遍历:
for(int i=0;i<n;i++)
{
for(int j=head[i];i;i=e[i].next)
{
一 通 操 作 ;
//这里一般是spfa找最短路啥的,会写一篇新的bo
}
}
ps:链式前向星明明是起码半年前就会的东西,现在又忘了以至于要重新写一遍,果然不愧是废物地瓜?,谁见了都会流泪。