100分但是Unaccepted,求调
查看原帖
100分但是Unaccepted,求调
764620
Raven_CZR楼主2025/1/13 21:30

如题,Subtask1 测试点#12显示 WA

#include <bits/stdc++.h>
using namespace std;

const int N = 2e3 + 5, M = 6e3 + 5, INF = 0x3f3f3f3f;

int n, m, mm;
int u[M], v[M], w[M];
int T;
int dis[N];

bool check(int s)
{
	int cnt = 0;
	while (true)
	{
		cnt++;
		bool flag = true;
		for (int i = 1; i <= mm; ++i)
		{
			if (dis[u[i]] + w[i] < dis[v[i]])
			{
				dis[v[i]] = dis[u[i]] + w[i];
				flag = false;
			}
		}
		if (flag) return false;
		if (cnt >= n) return true;
	}
}

int main()
{
	cin >> T;
	while (T--)
	{
		cin >> n >> m;
		mm = 0;
		for (int i = 1; i <= m; ++i)
		{
			int uu, vv, ww;
			cin >> uu >> vv >> ww;
			mm++;
			u[mm] = uu, v[mm] = vv, w[mm] = ww;
			if (ww >= 0)
			{
				mm++;
				u[mm] = vv, v[mm] = uu, w[mm] = ww;
			}
		}
		if (check(1)) cout << "YES" << endl;
		else cout << "NO" << endl;
	}
	return 0;
}
2025/1/13 21:30
加载中...