92分,第9个点WA了
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2 * 1e3 + 9,M = 1e6 + 9;
bool flag[N];
int dis[N];
int n,m,s = 1;
int u,v,w;
struct egde{
int to,cost,nex;
} e[M];
int head[N],ecnt;
int cnt[N];
void addegde(int u,int v,int w){
ecnt++;
e[ecnt] = (egde){v,w,head[u]};
head[u] = ecnt;
}
bool spfa(int s){
queue<int>q;
q.push(s);
flag[s] = true;
do{
int x = q.front();
q.pop();
flag[x] = false;
for(int i = head[x];i;i = e[i].nex){
int v = e[i].to;
if(dis[v] > e[i].cost + dis[x]){
dis[v] = e[i].cost + dis[x];
cnt[v] = cnt[x] + 1;
if(cnt[v] >= n)
return true;
if(!flag[v]){
flag[v] = true;
q.push(v);
}
}
}
}while(!q.empty());
return false;
}
void proceed(){
memset(flag,0,sizeof flag);
memset(head,0,sizeof head);
memset(cnt,0,sizeof cnt);
scanf("%lld%lld", &n, &m);
for(int i = 1;i <= n;i++)
for(int j = head[i];j;j = e[j].nex)
e[j] = (egde){0,0,0};
for(int i = 1;i <= n;i++)
if(i != s)
dis[i] = 114514;
for(int i = 1;i <= m;i++){
scanf("%lld%lld%lld", &u, &v, &w);
if(w >= 0){
addegde(u,v,w);
addegde(v,u,w);
}
else
addegde(u,v,w);
}
if(spfa(1)){
printf("YES\n");
return;
}
printf("NO\n");
}
int t;
signed main(){
scanf("%lld", &t);
for(int i = 1;i <= t;i++){
proceed();
}
}