i 为点,k 为单向边
head[ i ] = k --------------- i 号点所出发的第一条边的编号为k
nxt[ k1 ] = k2 -------------- k1 号边同起点的下一条边的编号为k2
to[ k ]= i -------------------- k号边所指向点
val[ k ] = v ----------------- k号边的边权为v
若为双向边,就建两个单向边
void add(int x,int y,int v) { ++cnt; nxt[cnt]=head[x]; to[cnt]=y; val[cnt]=v; head[x]=cnt; }