可能是死循环部分写错了,求大佬看看
#include<bits/stdc++.h>
using namespace std;
const int M=50001;int dis[M],pre[M],n,m;
struct EDGE {int to,nex,v;}e[M];int head[M],cnt;
void ad(int u,int v,int t){
e[cnt].to=v;
e[cnt].nex=u;e[cnt].v=t;
head[u]=cnt++;
}
int main(){
int u,v,t,n=0,m=0;
freopen("long.in","r",stdin);
freopen("long.out","w",stdout);
cin>>n>>m;
for(int i=2;i<=n;++i){
dis[i]=-9999;
}
dis[1]=0;
for(int i=1;i<=m;++i){
e[i].nex=-1;head[i]=-1;
}//lianshixiangqianxing
for(int i=1;i<=m;++i){
scanf("%d",&u);scanf("%d",&v);scanf("%d",&t);
ad(u,v,t);
}
queue<int>b;
while(1){
bool ok=false;
//b.clear;
b.push(1);
while(!b.empty()){
for(int i=head[b.front()];i>0;i=e[i].nex){
b.pop();
int p=e[i].to;
if(dis[p]<dis[i]+e[i].v){
dis[p]=dis[i]+e[i].v;ok=1;
}
b.push(p);
}
}
if(!ok){
if(dis[n]==-9999){
cout<<-1;return 0;
}
cout<<dis[n];return 0;
}
}
}