本蒟蒻菜死了
未解之谜
改了两天了
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<stdio.h>
#include<algorithm>
const int INF=0x3f3f3f3f;
using namespace std;
struct edge {
int to ,l;
edge(int v=0,int w=0) {
to=v;
l=w;
}
};
vector <edge> dg[5000];
int dis[5000];
int vis[5000];
int cnt[5000];
int n,m;
void spfa(int s) {
memset(dis,INF,sizeof(dis));
memset(vis,0,sizeof(vis));
memset(cnt,0,sizeof(cnt));
queue<int> q;
dis[s]=0;
q.push(s);
cnt[s]=1;
vis[s]=1;
while(!q.empty()) {
int u=q.front();
q.pop() ;
vis[u]=0;
for(int v=0; v<dg[u].size() ; v++) {
int to=dg[u][v].to;
if(dis[u]+dg[u][v].l<dis[to]) {
dis[to]=dis[u]+dg[u][v].l;
if(vis[to]==0) {
vis[to]=1;
q.push(to);
cnt[to]++;
if(cnt[to]>n) {
cout<<"YES"<<endl;
return ;
}
}
}
}
}
cout<<"N0"<<endl;
return ;
}
int main() {
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
int t;
cin>>t;
while(t--) {
cin>>n>>m;
int a,b,c;
while(m--) {
cin>>a>>b>>c;
dg[a].push_back(edge(b,c));
if(c>=0) {
dg[b].push_back(edge(a,c));
}
}
spfa(1);
for(int i=1; i<=n; i++) {
dg[i].clear() ;
}
}
return 0;
}