Wa on#9求助
查看原帖
Wa on#9求助
568775
Joseph_H楼主2022/10/26 15:45
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6;
const int leng = 2010;
struct node{
	int from,to,w;
	node(int a,int b,int c){
		from = a;
		to = b;
		w = c;
	}
};
vector <node> v[leng];
int n,m,s,t;
int spfa(){
	int dis[leng];
	bool inq[leng];
	int neg[leng];
	memset(neg,0,sizeof(neg));
	neg[1] = 1;
	for(int i = 1;i <= n;i++){
		dis[i] = maxn;
		inq[i] = false;
	}
	dis[1] = 0;
	queue <int> q;
	q.push(1);
	inq[1] = true;
	while(!q.empty()){
		int u = q.front();
		q.pop();
		inq[u] = false;
		for(int i = 0;i < v[u].size();i++){
			int l = v[u][i].to;
			int w = v[u][i].w;
			if(dis[u] + w < dis[l]){
				dis[l] = dis[u] + w;
				if(!inq[l]){
					inq[l] = true;
					q.push(l);
					neg[l]++;
					if(neg[l] >= n){
						return 1;
					}
				}
			}
		}
	}
	return 0;
}
int main(){
	int __;
	scanf("%d",&__);
	for(int _ = 1;_ <= __;_++){
		scanf("%d%d",&n,&m);
		for(int i = 1;i <= m;i++){
			int a,b,c;
			scanf("%d%d%d",&a,&b,&c);
			v[a].push_back(node(a,b,c));
			if(c >= 0)
				v[b].push_back(node(b,a,c));
		}
		if(!spfa()) printf("NO\n");
		else printf("YES\n");
		for(int i = 1;i <= n;i++) v[i].clear();
	}
}
2022/10/26 15:45
加载中...