##N表示点数,M表示边数
#数组
fir[N]:记录该点到达的第一条边
nxt[M]:记录下一条边(为了方便枚举与一个点相连的所有边)
to[M]:记录该条边所到达的点
len[M]:记录该条边的权值
代码
memset(fir, -1, sizeof(fir));//初始化
void add(int a, int b, int l){//a->b
len[cnt] = l;//第cnt条边的权值为l
to[cnt] = b;//第cnt条边指向b点
nxt[cnt] = fir[a];//第cnt条边的下一条边为a点的第一条边
fir[a] = cnt++;//a点的第一条边为第cnt条边
}
for(int i = fir[a]; i != -1; i = nxt[i])//枚举a的每一条边