本人萌新,实在看不出来了,求大佬帮忙调一下。
#include<bits/stdc++.h>
using namespace std;
int n,m,k,u,v1,d,s,t,a[10005][15],abcd=2e9,vis[10005];
vector<pair<int,int> > v[50005];
priority_queue<pair<int,int> > q;
int main(){
cin>>n>>m>>k>>s>>t;
while(m--){
cin>>u>>v1>>d;
v[u].push_back(make_pair(v1,d));
v[v1].push_back(make_pair(u,d));
}
memset(a,0x3f,sizeof a);
a[s][0]=0;
q.push(make_pair(s,a[s][0]));
while(!q.empty()){
u=q.top().second;
q.pop();
if(vis[u]) continue;
for(int j=0;j<v[u].size();j++){
v1=v[u][j].first,d=v[u][j].second;
for(int i=0;i<=k;i++){
if(a[v1][i]>a[u][i]+d){
a[v1][i]=a[u][i]+d;
q.push(make_pair(-a[v1][i],v1));
}
if(i<k){
a[v1][i+1]=a[u][i];
q.push(make_pair(-a[v1][i+1],v1));
}
}
}
vis[u]=1;
}
for(int i=0;i<=k;i++) abcd=min(abcd,a[t][i]);
cout<<abcd;
return 0;
}
感谢大佬耐心看完,不喜勿喷。