在编辑器上没问题
提示: Runtime Error. Received signal 11: Segmentation fault with invalid memory reference.
#include<bits/stdc++.h>
using namespace std;
const int MAXN=3e3+10;
queue<int>q;
int v[MAXN],w[MAXN],nxt[MAXN],head[MAXN],idx;
int t,n,m,dis[MAXN],cnt[MAXN];
bool vis[MAXN];
void addEdge(int uu,int vv,int ww)
{
idx++;
nxt[idx]=head[uu];
head[uu]=idx;
v[idx]=vv;
w[idx]=ww;
}
bool spfa()
{
q.push(1);
vis[1]=1;
dis[1]=0;
while(!q.empty())
{
int x=q.front();
q.pop();
vis[x]=0;
for(int i=head[x];i!=0;i=nxt[i])
{
int vv=v[i];
if(dis[x]+w[i]<dis[vv])
{
dis[vv]=dis[x]+w[i];
if(!vis[vv])
{
q.push(vv);
vis[vv]=1;
if(++cnt[vv]>=n)return 1;
}
}
}
}
return 0;
}
int main()
{
cin>>t;
while(t--)
{
memset(cnt,0,sizeof(cnt));
memset(vis,0,sizeof(vis));
memset(dis,0x3f3f3f3f,sizeof(dis));
memset(v,0,sizeof(v));
memset(w,0,sizeof(w));
memset(nxt,0,sizeof(nxt));
memset(head,0,sizeof(head));
cin>>n>>m;
int uu,vv,ww;
for(int i=1;i<=m;i++)
{
cin>>uu>>vv>>ww;
if(ww>=0)
{
addEdge(uu,vv,ww);
addEdge(vv,uu,ww);
}
else addEdge(uu,vv,ww);
}
if(spfa())cout<<"YES\n";
else cout<<"NO\n";
}
}