链式前向星
0x3f3f3f3f>10亿,且0x3f3f3f3f*2在int范围内。
int最大值2147483647
链式前向星用来存储一个图。
用结构体
实现链式前向星
我们定义一个edge结构体数组,存储每一个链表节点里的信息
struct edge{
int ver=-1,nex,bq;//ver当前能走到的节点,nex下一个节点坐标,bq边权
};
存储图用到add
函数,将每个边存储进去。
void add(int a,int b,int v){0
cnt++;
e[cnt].ver=b;
e[cnt].bq=v;
e[cnt].nex=head[a];
head[a]=cnt;
}
用数组
实现链式前向星
定义
int ver[],head[],bq[],nxt[],cnt=-1;
add函数
void add(int a,int b,int v){
cnt++;
ver[cnt]=b;
bq[cnt]=v;
nxt[cnt]=head[a];
head[a]=cnt;
}
用vector
实现链式前向星
定义vector数组
vextor< vector<int> > e(100);
加节点
e[a].push_back(b);
怎样调用函数增加一条边?
add(节点a,指向节点b,边权);