用链表应该是比较麻烦的,可以用结构+数组实现
struct Edge
{
int from,to,val,next;
}edge[maxn];
int edgenum;
void addedge(int u,int v,int w)
{
edge[edgenum].from = u;
edge[edgenum].to = v;
edge[edgenum].val = w;
edge[edgenum].next = head[u];//head[u]现在存储着u节点链接的最后一个节点
head[u] = edgenum++;//现在u节点最后一个边就是edgenum了,所以head[u]记录一下它
}