#7#9WA求助
查看原帖
#7#9WA求助
1033244
Wangyixi007楼主2024/4/22 19:59
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+1,INF=0x7fffffff;
vector<pair<int,int> >e[N];
int dist[N],vis[N];
int n,m,s,a,b;
void Dijs(){
	for(int i=1;i<=n;i++){
		dist[i]=INF;
	}
	dist[s]=0;
	priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>q;
	q.push({0,s});
	while(!q.empty()){
		int u=q.top().second;
		q.pop();
		vis[u]=0;
		for(auto x:e[u]){
			int v=x.first,w=x.second;
			if(dist[u]+w<dist[v]){
				dist[v]=dist[u]+w;
				if(!vis[v]){
					q.push({dist[v],v});
					vis[v]=1;
				}
			}
		}
	}
}
int main(){
	cin>>m>>n>>s>>a>>b;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		e[u].push_back({v,w});
		e[v].push_back({u,w});
	}
	Dijs();
	int sb=dist[b];
	memset(vis,0,sizeof(vis));
	s=b;
	Dijs();
	cout<<sb+dist[a];
	return 0;
}
2024/4/22 19:59
加载中...