玄关#7WA
查看原帖
玄关#7WA
1241185
yi105011楼主2024/8/25 14:16

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 510;
int t , n , m , p , dis[N] , vis[N] , cnt[N];
struct node {
	int id , num;
} ;
vector <node> v[N];
queue <int> q;
void start () {
	for (int i = 1;i <= n;i ++) v[i].clear ();
	while (q.size() > 0) q.pop ();
	memset (dis , 0x3f , N );
	memset (vis , 0 , N );
	memset (cnt , 0 , N );
	for (int i = 1;i <= n;i ++) v[0].push_back ( node {i , 0} );
}
bool spfa () {
	dis[0] = 0; vis[0] = 1; cnt[0] = -1;
	q.push ( 0 ) ;
	while (q.size() > 0) {
		int u = q.front(); q.pop ();
		vis[u] = 0;
		for (auto e : v[u]) {
			int id = e.id , num = e.num;
			if (dis[id] > dis[u] + num) {
				dis[id] = dis[u] + num;
				cnt[id] = cnt[u] + 1;
				if (cnt[id] >= n) return false;
				if ( !vis[id] ) q.push (id) , vis[id] = 1;
			}
		}
		//vis[u] = 1; 
	}
	return true;
}
int main () {
	cin >> t;
	while (t --) {
		cin >> n >> m >> p;
		start ();
		while (m --) {
			int a , b , c; cin >> a >> b >> c;
			v[a].push_back ( node {b , c} );
			v[b].push_back ( node {a , c} );
		}
		while (p --) {
			int a , b , c; cin >> a >> b >> c;
			v[a].push_back ( node {b , -c} );
		}
		bool flag = spfa ();
		if (flag == 1) cout << "NO\n";
		else cout << "YES\n";
	}
	return 0;
}

提交记录

2024/8/25 14:16
加载中...