//前向星
#define N_node 1000 //点的个数
#define N_edge 5000 //边的条数
typedef struct //节点信息
{
int to ,next; //to 点,next E中下标信息
int cost; //当前边的权值
}STAR;
STAR E[N_edge]; //节点信息数组
int list[N_node]; //记录该点所连接的一系列点中的一个的E数组下标
int tot; //记录当前E数组已经用到下标几了
void add(int a ,int b ,int c) //添加一条a 到 b 的权值为c的边
{
E[++tot].to = b; //创建出当前节点b
E[tot].cost = c; //到达当前节点的权值
E[tot].next = list[a]; //把当前节点插入到与a相连的所有点的最前方
list[a] = tot; //节点a指向新加的,也就是插入到最前方的这个点
}
//存边之前记得把list数组清空,还有把list数组当前所有下标赋值成1
memset(list ,0 ,sizeof(list));
tot = 1;
//遍历,输出点a所连接的所有点b
for(int k = list[a] ;k ;k = E[k].next) //从头开始一个一个的遍历与点a相连的所有点
{
int b = E[k].to;
printf("%d
" ,b);
}