无环 两个点TLE一个点MLE 为什么死循环没查出来
#include <iostream>
#include <utility>
#include <queue>
using namespace std;
int n,m;
const int Maxn=1505,Maxm=5e4+5;
int edge;
int to[Maxm],nxt[Maxm],head[Maxn],w[Maxm];
int d[Maxn];
void add(int u,int v,int W)
{
to[++edge]=v;
w[edge]=W;
nxt[edge]=head[u];
head[u]=edge;
}
queue<int> q;
int main()
{
int u,v,W;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&W);
add(u,v,W);
}
q.push(1);
bool flag=false;
while(!q.empty())
{
cout<<q.front()<<endl;
u=q.front();
q.pop();
for(int now=head[u];now;now=nxt[now])
{
v=to[now];
if(v==n) flag=true;
W=w[now];
d[v]=max(d[v],d[u]+W);
q.push(v);
}
}
if(flag==true) cout<<d[n];
else cout<<"-1";
return 0;
}