Dijkstra 重获新生
查看原帖
Dijkstra 重获新生
928604
Tiffake楼主2024/7/2 12:02

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;
}
2024/7/2 12:02
加载中...