邻接表+spfa 10分求调
查看原帖
邻接表+spfa 10分求调
942205
feizhaishui666楼主2024/12/8 21:42
#include <bits/stdc++.h>
using namespace std;
struct Edge{
	int to,w;
};
vector<Edge> vt[2505];
int n,m,s,e,dis[2505];
void spfa(){
	for(int i=1;i<=n;i++)
		dis[i] = 10000;
	queue<int> q;
	dis[s] = 0;
	q.push(s);
	while(!q.empty()){
		int u = q.front();
		q.pop();
		for(int i=0;i<vt[u].size();i++){
			Edge e = vt[u][i];
			int v=e.to, w=e.w;
			if(dis[v]>dis[u]+w){
				dis[v] = dis[u]+w;
				q.push(v);
			}
		}
	}
	printf("%d",dis[e]);
}
int main(){
	cin >> n >> m >> s >> e;
	int u,v,w; 
	for(int i=0;i<m;i++){
		cin >> u >> v >> w;
		vt[u].push_back((Edge){v,w});
		vt[v].push_back((Edge){u,v});	//无向图
	}
	spfa();
	return 0;
}
2024/12/8 21:42
加载中...