一般使用邻接表存储图信息的数据结构如下图
vector<int> vec[N];
使用数组模拟邻接表的数据结构如下图(这个存储方法很新颖,可以了解一下,以前在别人的算法中屡次遇见,今天才明白它的存储逻辑)
int head[N];
int p[M]; 存储的是边指向的点下标
int nextP[M]; 存储的是边
int edgecnt = 0;
//加入边
void addedge(int u, int v) // u -> v
{
++edgecnt ;
p[edgecnt] = v;
nextP[edgecnt] = head[u];
head[u] = edgecnt;
}
//遍历u的边
for (int i = head[u]; i; i = nextP[i])
{
v = p[i];
}