SPFA模板保存
2025-07-10 11:28:46
发布于:上海
#include<bits/stdc++.h>
using namespace std;
int n,m,k,a,b;
int s[101][101],dis[101],cnt[101];
bool vis[101];
void spfa(int u){
for(int i=0;i<=n;i++){
dis[i]=1e9;
vis[i]=0;
}
queue<int> q;
dis[u]=0;
q.push(u);
while(q.size()){
u=q.front();
vis[u]=0;
cnt[u]++;
if(cnt[u]>n)
break;
q.pop();
for(int i=1;i<=n;i++){
int v=i,w=s[u][v];
if(dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
if(!vis[v]){
vis[v]=1;
q.push(v);
}
}
}
}
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
s[i][j]=1e9;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
s[u][v]=w;
}
cin>>a>>b;
spfa(k);
cout<<s[a][b];
return 0;
}
这里空空如也
有帮助,赞一个