找不出问题啊
TLE
#include<bits/stdc++.h>
using namespace std;
struct edge
{
int dis,nxt,to;
};
std::queue<int> q;
const int N=1e5+7;
int n,m,s[N],d[N],cnt,head[N];
bool book[N];
edge e[N];
inline void add(int u,int v,int w)
{
e[++cnt].dis=w;
e[cnt].to=v;
e[cnt].nxt=head[u];
head[u]=cnt;
return;
}
inline void spfa()
{
memset(book,false,sizeof(book));
memset(s,0,sizeof(s));
memset(d,0x3f,sizeof(d));
book[1]=true;
d[1]=0;
q.push(1);
while(!q.empty())
{
int u=q.front();
q.pop();
book[u]=false;
for(int i=head[u];i;i=e[i].nxt)
{
int v=e[i].to,w=e[i].dis;
if (d[v]>d[u]+w)
{
d[v]=d[u]+w;
s[v]=s[u]+1;
if (s[v]<=n)
{
std::cout<<"YES"<<endl;
return;
}
if (!book[v])
{
book[v]=true;
q.push(v);
}
}
}
}
std::cout<<"NO"<<endl;
return;
}
int main(void)
{
int t;
std::cin>>t;
for(int i=1;i<=t;i++)
{
int n,m;
std::cin>>n>>m;
cnt=0;
memset(head,0,sizeof(head));
for(int j=1;j<=m;j++)
{
int u,v,w;
std::cin>>u>>v>>w;
add(u,v,w);
if (w>=0)
{
add(v,u,w);
}
}
spfa();
}
return 0;
}