建图(图的存储结构)
图可以看作一般化的树
建图(图的存储结构)
以存点方式存储图
邻接矩阵(适用于稠密图)
vector<vector<int>>v(MAX,vector<int>(MAX,0));
邻接表
unordered_map<int,vector<int>> head;
以存边方式存储图
链式前向星(静态链表版邻接表,常用)
前向星:指的是存储节点的出度边,其形状类似一个星星。
//以DAG带权图为例
int cnt=0;//cnt:当前边序号工作指针,初始化为0
struct vertex{//点集
int in,out;//入度,出度
int e=-1;//edge:存储该点最后一条出度边的序号,默认设置-1为结束标志
}v[MAXV];
struct edge{//边集
int u,v,w;//from,to,weight
int n=-1;//next:存储上一条同为该点出度边的序号,默认设置-1为结束标志
}e[MAXE];//DAG中MAXE为MAXV的2倍
void add(int U,int V,int W){//加边操作
e[cnt].u=U,e[cnt].v=V,e[cnt].w=W;
v[U].out++,v[V].in++;
e[cnt].n=v[U].e;//连接上一条边,与头插法先连接首元结点等价 以-1为结束标志
v[U].e=cnt++;//更新点集数组,与头插法更新头指针等价
}

浙公网安备 33010602011771号