给每条边编号
first[i]表示以i为顶点的边的编号,数组初始化为-1,
next[i]表示与编号i的边的顶点相连的上一条边的编号
for(i=1;i<=n;i++)
first[i]=-1;
for(i=1;i<=m;i++)
{
scanf("%d %d %d",&u[i],&v[i],&w[i]);//读入每一条边
next[i]=first[u[i]];
first[u[i]]=i;
}
遍历每个顶点的所有边的代码如下:
for(i=1;i<=n;i++)
{
k=first[i];//开始first[i]存的是与i顶点相连的最后一条边的编号
while(k!=-1)
{
printf("%d %d %d\n",u[k],v[k],w[k]);
k=next[k];
}
}
其实我想说
这个博客看着很好理解,快去快去快去看