#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
const int inf=0x3f3f3f3f;
const int maxn=1005;
int n,m;
int dis[maxn],vis[maxn],pre[maxn],mp[maxn][maxn];
int dijkstra(int flag,int st,int en)
{
for(int i=1;i<=n;i++)
{dis[i]=mp[i][st];
vis[i]=0;
if(flag)pre[i]=st;}
pre[st]=-1;
dis[st]=0;
vis[st]=1;
while(1)
{int minn=inf,pos;
for(int i=1;i<=n;i++)
{
if(!vis[i]&&dis[i]<minn)
minn=dis[pos=i];
}
if(minn==inf)break;
vis[pos]=1;
for(int i=1;i<=n;i++)
if(!vis[i]&&dis[i]>dis[pos]+mp[pos][i])
{dis[i]=dis[pos]+mp[pos][i];
if(flag)pre[i]=pos;}
}
return dis[en];
}
int main()
{
while(cin>>n>>m)
{
memset(mp,0x3f,sizeof(mp));
while(m--)
{
int u,v,val;
cin>>u>>v>>val;
if(val<mp[u][v])
mp[u][v]=mp[v][u]=val;
}
dijkstra(1,1,n);
int maxx=-107;
for(int i=n;i!=1;i=pre[i])
{
int temp=mp[i][pre[i]];
mp[i][pre[i]]=mp[pre[i]][i]=inf;
maxx=max(dijkstra(0,1,n),maxx);
mp[i][pre[i]]=mp[pre[i]][i]=temp;
}
cout<<maxx<<endl;
}
}
hdu1595find the longest of shortest
猜你喜欢
转载自blog.csdn.net/weixin_43331783/article/details/88078704
今日推荐
周排行