(玄关)最短路问题求解
查看原帖
(玄关)最短路问题求解
573977
Zcras楼主2024/11/13 15:11

rt,用的dijk求最长路

void dijk(int s){
	q.push(make_pair(w[s],s));
	dis[s]=w[s];
	while(!q.empty()){
		PII p=q.top();
		int u=p.y;
		q.pop();
		if(visn[u])continue;
		visn[u]=1;
		for(int i=headn[u];i;i=en[i].nxt){
			int v=en[i].to;
			if(dis[v]<dis[u]+w[v]){
				dis[v]=dis[u]+w[v];
				q.push(make_pair(dis[v],v));
			}
		}
	}
}

这份70pts,下一份去掉vis后ac

void dijk(int s){
	q.push(make_pair(w[s],s));
	dis[s]=w[s];
	while(!q.empty()){
		PII p=q.top();
		int u=p.y;
		q.pop();
		for(int i=headn[u];i;i=en[i].nxt){
			int v=en[i].to;
			if(dis[v]<dis[u]+w[v]){
				dis[v]=dis[u]+w[v];
				q.push(make_pair(dis[v],v));
			}
		}
	}
}
2024/11/13 15:11
加载中...