#include<bits/stdc++.h>
using namespace std;
#define inf 110
int n,m,s=1,dis[inf],xdis[inf],vis[inf],ans,sp;
struct link{int to,w;};
vector<link>l[inf];
struct node{
int d,p;
bool operator < (const node x)const{
return x.d<d;
}
};
priority_queue<node>q;
int dijkstra(){
memset(dis,110,sizeof(dis));
memset(vis,0, sizeof(vis));
dis[s]=0;q.push(node{0,s});
while(q.size()){
node t=q.top();q.pop();
int x=t.p;
if(vis[x])continue;
vis[x]=1;
for(int i=0;i<l[x].size();i++){
int y=l[x][i].to;
cout<<"dijkstra:"<<x<<' '<<y<<' '<<l[x][i].w<<endl;
if(dis[y]>dis[x]+l[x][i].w){
dis[y]=dis[x]+l[x][i].w;
if(!vis[y])q.push(node{dis[y],y});
}
}
}
for(int i=1;i<=n;i++)
printf("dis %d = %d\n",i,dis[i]);
return dis[n];
}
void dfs(int x){
for(int i=0;i<l[x].size();i++){
int y=l[x][i].to;
if(xdis[x]==xdis[y]+l[x][i].w){
cout<<x<<' '<<y<<' '<<l[x][i].w<<endl;
l[x][i].w*=2;
cout<<x<<' '<<y<<' '<<l[x][i].w<<endl;
ans=max(ans,dijkstra());
l[x][i].w/=2;
dfs(y);
}
}
}
int main(){
cin>>n>>m;
for(int i=1,u,v,w;i<=m;i++){
cin>>u>>v>>w;
l[u].push_back(link{v,w});
l[v].push_back(link{u,w});
}
sp=dijkstra();
memcpy(xdis,dis,sizeof xdis);
dfs(n);
cout<<ans<<endl;
}
不知道哪里出了问题 最短路长度一直为6 (样例)求大佬调