(1) head[i]一般先初始化为-1;
(2) head[i]保存的是:以i为起点的所有边中,最后读入的那条边的编号。我们把这条边当作顶点i的第一条起始边。
int head[MAX]; //存储以i号点为起点 的 第一条边编号 struct edge { int w; //这条边的权值 int to; //这条边的终点,某号点 int next; //与这条边同起点 的 下一条边编号 }e[MAX*MAX]; //存储位置在这儿! void add(int u,int v,int w) { edge[++cn].w=w; edge[cn].next=head[u]; edge[cn].to=v; head[u]=cn; }