问一下(悬无穷大棺):
  • 板块灌水区
  • 楼主MWL_wma
  • 当前回复22
  • 已保存回复22
  • 发布时间2023/10/15 19:02
  • 上次更新2023/11/2 13:35:31
查看原帖
问一下(悬无穷大棺):
1023017
MWL_wma楼主2023/10/15 19:02

dijkstra  模板题求解:\LARGE{dijkstra\ \ 模板题求解:}

#include<bits/stdc++.h>
using namespace std;
priority_queue<pair<int,int> >d; 
vector<int> l[6202],v[6202];
bool b[2502];
int f[2502];
int s,t,n,m;
int main(){
	scanf("%d%d%d%d",&n,&m,&s,&t);
	for(int i=1;i<=m;i++){
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		l[x].push_back(y);
		l[y].push_back(x);
		v[x].push_back(z);
		v[y].push_back(z); 
	}
	for(int i=1;i<=n;i++){
		f[i]=1e9+1;
	}
	f[s]=0;
	d.push(make_pair(0,s));
	while(!d.empty()){
		int x=d.top().second;
		d.pop();
		if(b[x]){
			continue;
		}
		b[x]=1;
		int sz=l[x].size();
		for(int i=0;i<sz;i++){
			int y=l[x][i];
			f[y]=min(f[y],f[x]+v[x][i]);
			d.push(make_pair(-f[y],y));
		}
	}
	printf("%d",f[t]);
	return 0;
}

为什么倒数第 66 行是 d.push(make_pair(-f[y],y)); 而不是 d.push(make_pair(-f[y],y));?本蒟蒻望了……

2023/10/15 19:02
加载中...