检查一下你的add_edge的cnt是否赋了1的初值。
add_edge
cnt
int cnt=1; void add_edge(int u,int v,int d){ e[++cnt].now=v; e[cnt].next=head[u]; e[cnt].dis=d; head[u]=cnt; }
只有我这种菜鸡才会犯这种错误了吧(