稠密图
int g[N][N];
稀疏图
边的条数|E|远小于|V|²的图称为稀疏图
// 对于每个点 k,开一个单链表,存储k所有可以走到的点。h[k] 存储这个单链表的尾结点
int h[N], e[N], ne[N], idx;
// 添加一条边a->b
void add(int a, int b)
{
e[idx] = b;
ne[idx] = h[a];
h[a] = idx;
idx++;
}
// 初始化
idx = 0;
memset(h, -1, sizeof h);