#include #define maxn 100 long long dis[maxn+1],oo=0x7fffffffffffffff; int num[maxn+1],tu[maxn+1][maxn+1],w[maxn+1][maxn+1],pre[maxn+1],queue[2*maxn+5],head,tail,n,e,a,b,c,s,t,i; bool exist[maxn+1]; const int len=2*maxn+5; int main() { freopen("msner.in","r",stdin); freopen("msner.out","w",stdout); scanf("%d%d",&n,&e); for(i=1;i<=n;i++) dis[i]=oo; for(i=0;idis[t]+w[t][tu[t][i]]) { dis[tu[t][i]]=dis[t]+w[t][tu[t][i]]; pre[tu[t][i]]=t; if(!exist[tu[t][i]]) { queue[tail++]=tu[t][i]; tail%=len; exist[tu[t][i]]=1; } } } long long max=0; for(i=1;i<=n;i++) { if(dis[i]==oo) { printf("-1\n"); return 0; } if(dis[i]>max) max=dis[i]; } printf("%d\n",max); return 0; }