// 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单链表的头结点
int h[N], e[N], ne[N], idx;//idx为全局变量
// 添加一条边a->b
void add(int a, int b)
{
e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;//通过idx把e[],ne[],h[]串联起来
}
// 初始化
idx = 0;
memset(h, -1, sizeof h);
int u;//表示u节点
for(int i = h[u];~i;i = ne[i])//i表示u节点可连接到的不同的idx,因为idx可以串联到ne[]来找到下一个idx
{
int j = e[i];//j表示通过idx下表索引到的e[],表示节点的编号
}