邻接表
int head[
100100];
//表头,head[i]代表起点是i的边的编号
int cnt;
//代表边的编号
struct
s
{
int u;
//记录边的起点
int v;
//记录边的终点
int w;
//记录边的权值
int next;
//指向上一条边的编号
}edge[
100010];
void add(
int u,
int v,
int w)//向所要连接的表中加入边
{
edge[cnt].u=u;
edge[cnt].v=v;
edge[cnt].w=w;
edge[cnt].
next=head[u];
head[u]=cnt++;
}
int main()
{
int n;
freopen(
"input.txt",
"r",stdin);
while(scanf(
"%d",&n)!=EOF)
{
int i;
cnt=
0;
memset(head,-
1,sizeof(head));
//清空表头数组
for(i=
0;i<n;i++)
{
int u,v,w;
scanf(
"%d%d%d",&u,&v,&w);
add(u,v,w);
}
/*
int u,v,w;
scanf(
"%d",&u);
for(i=head[u];i!=-
1;i=edge[i].
next)//输出所有与起点为u相连的边的终点和权值
{
v=edge[i].v;
w=edge[i].w;
printf(
"%d %d\n",v,w);
}
*/
for(i =
0 ;i< n; i++)
printf(
"head[%d]: %d\n",i,head[i]);
for(i =
0 ; i<n;i++)
printf(
"edge[%d]:start:%d, end:%d, next:%d\n",i,edge[i].u,edge[i].v,edge[i].
next);
}
return 0;
}