if(!vis[son[i]]&&dis[a.id]+v[i]<dis[son[i]]){ dis[son[i]]=dis[a.id]+v[i]; put(dis[son[i]],son[i]); }
if(dis[a.id]+v[i]<dis[son[i]]){ dis[son[i]]=dis[a.id]+v[i]; if(vis[son[i]])put(dis[son[i]],son[i]); }
按着前者这么写也能通过这道题,但是能证明前者的正确性吗>_<,感觉这样会有些值更新不到