rt,把 dijkstra 的 vis 去掉即可。
bool dijkstra(){
for(int i=1;i<=n;i++)d[i]=INT_MAX;
while(q.size())q.pop();
d[st]=0,cur[st]=h[st],q.push({0,st});
while(q.size()){
int u=q.top().second;q.pop();
if(u==ed)return 1;
for(int i=h[u];i;i=edge[i].nxt){
int v=edge[i].to,c=edge[i].c,w=edge[i].w;
if(c&&d[v]>d[u]+w)d[v]=d[u]+w,cur[v]=h[v],q.push({d[v],v});
}
}
return 0;
}