memset(h,0,sizeof h);

加入有向边(x,y) 权值为z

    void add(int x,int y,int z)
    {
        idx++;
        e[idx]=y;
        w[idx]=z;
        ne[idx]=h[x];
        h[x]=idx;
    }

访问从x出发的所有边

    for(int i=h[x],i,i=ne[i])
    {
        int y=e[i];
        int z=w[i];
    }