执行
add(1, 2)
, cnt = 0:
edge[0].first = 2;
edge[0].second = head[1] = -1; // 当时 head[1] 是 -1,所以存 -1
head[1] = 0; // 更新 head[1] 为 0
cnt++; // cnt 变成 1
链条变成:head[1](0) -> edge[0](first=2) -> -1
执行
add(1, 3)
, cnt = 1:
edge[1].first = 3;
edge[1].second = head[1] = 0; // 当时 head[1] 是 0,所以存 0
head[1] = 1; // 更新 head[1] 为 1
cnt++; // cnt 变成 2
链条变成:head[1](1) -> edge[1](first=3) -> edge[0](first=2) -> -1