//Not my code. Correcting the code given at https://d...content-available-to-author-only...f.com/questions/92244/what-is-the-wrong-in-this-code
#include<bits/stdc++.h>
#define pii pair<int,int>
#define infinity 99999999999
using namespace std;
long int n,m,u,v,w;
long int dijkstra(int start, vector<pii>G[])
{
long int *dist = new long int[n+1];
priority_queue<pii,vector<pii>,greater<pii> >q;
for(int i=1; i<=n; i++)
{
dist[i]=infinity;
}
q.push(pii(0,start));
dist[start]=0;
while(!q.empty())
{
u=q.top().second;
q.pop();
for(int i=0; i<G[u].size();i++)
{
v=G[u][i].second;
w=G[u][i].first;
if(dist[u]+w<dist[v])
{
dist[v]=dist[u]+w;
q.push(pii(dist[v],v));
}
}
}
long int mx = 0;
for(int i=1; i<=n; i++)
{
mx = max(mx, dist[i]);
}
return mx;
free(dist);
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;
vector<pii>G[n+1];
while(m--)
{
cin>>u>>v>>w;
G[u].push_back(pii(w,v));
G[v].push_back(pii(w,u));
}
long int ans=-infinity;
for(int i=1; i<=n; i++) //Now start from each i, and take maximum of all values mx returned by your function.
{
int start = i;
ans=max(ans,dijkstra(start,G));
}
cout<<ans<<endl;
return 0;
}
Ly9Ob3QgbXkgY29kZS4gQ29ycmVjdGluZyB0aGUgY29kZSBnaXZlbiBhdCBodHRwczovL2QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmYuY29tL3F1ZXN0aW9ucy85MjI0NC93aGF0LWlzLXRoZS13cm9uZy1pbi10aGlzLWNvZGUKCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBpbmZpbml0eSA5OTk5OTk5OTk5OQp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBsb25nIGludCBuLG0sdSx2LHc7CiAKIAogCiAKIAogCmxvbmcgaW50IGRpamtzdHJhKGludCBzdGFydCwgdmVjdG9yPHBpaT5HW10pCiB7CiAgICAgbG9uZyBpbnQgKmRpc3QgPSBuZXcgbG9uZyBpbnRbbisxXTsKIAogICAgIHByaW9yaXR5X3F1ZXVlPHBpaSx2ZWN0b3I8cGlpPixncmVhdGVyPHBpaT4gPnE7CiAKICAgICBmb3IoaW50IGk9MTsgaTw9bjsgaSsrKQogICAgIHsKICAgICAgICBkaXN0W2ldPWluZmluaXR5OwogICAgIH0KIAogICAgIHEucHVzaChwaWkoMCxzdGFydCkpOwogICAgIGRpc3Rbc3RhcnRdPTA7CiAKICAgICB3aGlsZSghcS5lbXB0eSgpKQogICAgIHsKICAgICAgICB1PXEudG9wKCkuc2Vjb25kOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yKGludCBpPTA7IGk8R1t1XS5zaXplKCk7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgdj1HW3VdW2ldLnNlY29uZDsKICAgICAgICAgICAgdz1HW3VdW2ldLmZpcnN0OwogICAgICAgICAgICBpZihkaXN0W3VdK3c8ZGlzdFt2XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGlzdFt2XT1kaXN0W3VdK3c7CiAgICAgICAgICAgICAgICBxLnB1c2gocGlpKGRpc3Rbdl0sdikpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgIH0KIAogICAgbG9uZyBpbnQgbXggID0gMDsKICAgIGZvcihpbnQgaT0xOyBpPD1uOyBpKyspCiAgICB7CiAgICAgICAgbXggPSBtYXgobXgsIGRpc3RbaV0pOwogICAgfQogICAgcmV0dXJuIG14OwogICAgZnJlZShkaXN0KTsKIH0KIAogCiAKIAogCmludCBtYWluKCkKewogICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgICBjaW4+Pm4+Pm07CiAgICAgdmVjdG9yPHBpaT5HW24rMV07CiAgICAgd2hpbGUobS0tKQogICAgIHsKICAgICAgICBjaW4+PnU+PnY+Pnc7CiAgICAgICAgR1t1XS5wdXNoX2JhY2socGlpKHcsdikpOwogICAgICAgIEdbdl0ucHVzaF9iYWNrKHBpaSh3LHUpKTsKICAgICB9CiAgICAgbG9uZyBpbnQgYW5zPS1pbmZpbml0eTsKICAgICBmb3IoaW50IGk9MTsgaTw9bjsgaSsrKSAvL05vdyBzdGFydCBmcm9tIGVhY2ggaSwgYW5kIHRha2UgbWF4aW11bSBvZiBhbGwgdmFsdWVzIG14IHJldHVybmVkIGJ5IHlvdXIgZnVuY3Rpb24uIAogICAgIHsKICAgICAgICAgaW50IHN0YXJ0ID0gaTsKICAgICAgICAgYW5zPW1heChhbnMsZGlqa3N0cmEoc3RhcnQsRykpOwogICAgIH0KICAgICBjb3V0PDxhbnM8PGVuZGw7CiAgICAgcmV0dXJuIDA7CiAKfQ==