理解网站:数组模拟邻接表 - AcWing
// head[i] 存储第i个结点的头结点的下标
// e[i] 存储结点i的值
// ne[i] 存储结点i的下一个结点的下标
// idx 存储当前可用的结点的下标
int head[N], e[N], ne[N], idx;
//初始化
memset(h, -1, sizeof h);
//插入一条有向边 a --> b
void add(int a, int b)
{
e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}
//遍历顶点a指向的顶点的值
for(int i = head[a]; i != -1; i = ne[i])
cout << e[i] << ' ';