邻接表的数组表示
#include <iostream>
const int N = 100010; // 点
const int M = 2 * N; // 边
int h[N];
int e[M], w[M], ne[M], idx;
// 在a->b 加一条权值为w的边
void add(int a, int b, int w)
{
e[idx] = b, ne[idx] = h[a], w[idx] = w, h[a] == idx ++;
}
// 遍历
for (int i = h[a], i != -1; i = ne[i])
{
int j = e[i];
}
memset(h, -1, sizeof h);