参考:点击打开链接
代码:
#include<bits/stdc++.h>
const int N = 100005;
int head[N],cnt;
struct node
{
int to,val;
int next;
}edge[N+10];
void add_edge(int from,int to,int val)
{
edge[++cnt].to=to;
edge[cnt].val=val;
edge[cnt].next=head[from];
head[from]=cnt;
}
int main()
{
memset(head,0,sizeof(head));
int n,m;
scanf("%d%d",&n,&m);
cnt=0;
for(int i=1;i<=m;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add_edge(u,v,w);
add_edge(v,u,w);
}
for(int i=1;i<=n;i++)
{
printf("%d: ",i);
for(int j=head[i];j;j=edge[j].next)
printf("%d ",edge[j].to);
printf("\n");
}
return 0;
}