有没有大佬帮忙看看为什么错了,谢谢!
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int n,m,g[N][N],dist[N];
bool st[N];
int dijkstra(){
memset(dist,0x3f,sizeof(dist));
dist[1]=0;
memset(st,0,sizeof(st));
for(int i=1;i<=n;i++){
int t=-1;
for(int j=1;j<=n;j++)
if(!st[j]&&(t==-1||dist[t]>dist[j]))
t=j;
st[t]=true;
for(int j=1;j<=n;j++)
dist[j]=min(dist[j],dist[t]+g[t][j]);
}
return dist[n];
}
int main(){
cin>>n>>m;
memset(g,0x3f,sizeof(g));
while(m--){
int x,y,z;
cin>>x>>y>>z;
g[x][y]=g[y][x]=z;
}
int ans,now=dijkstra();
for(int i=1;i<=n;i++)
for(int j=1;j<i;j++)
if(g[i][j]!=0x3f3f3f3f){
g[i][j]*=2;g[j][i]*=2;
int tmp=dijkstra();
ans=max(ans,tmp);
g[i][j]/=2;g[j][i]/=2;
}
cout<<ans-now;
return 0;
}