没添加这个输出路径函数dfs前可以正常运行,但添加了之后反而输出被阻塞了,不明白问题出在哪里,这个dfs是我抄来的,不是很理解,可以的话,希望大佬帮我解释一下
#include<bits/stdc++.h>
using namespace std;
int pre[2500];
int dis[2500];
int v[2500][2500];
int book[2500]={0};
int n,m,s,t;
int u,g,w;
void dijstra(){
int min,z;
for(int k=1;k<=n;k++){
min=INT_MAX;
for(int i=1;i<=n;i++){
if(book[i]==0&&min>dis[i]){
min=dis[i];
z=i;
}
}
book[z]=1;
for(int i=1;i<=n;i++){
if(book[i]==0&&dis[i]>dis[z]+v[z][i]){
dis[i]=dis[z]+v[z][i];
pre[i]=z;
}
else if(book[i]==0&&dis[i]==dis[z]+v[z][i])
pre[i]=z;
}
}
}
void dfs(int start,int end){
if(start==end){
cout<<start;
return;
}
dfs(start,pre[end]);
cout<<end;
return;
}
int main(){
cin>>n>>m>>s>>t;
memset(v,0x3f,sizeof(v));
for(int i=1;i<=m;i++){
cin>>u>>g>>w;
v[u][g]=v[g][u]=min(v[u][g],w);
}
for(int i=1;i<=n;i++){
dis[i]=v[s][i];
}
book[s]=1;
dijstra();
dfs(s,t);
cout<<dis[t];
return 0;
}