TLE #9 求助
查看原帖
TLE #9 求助
921288
Specthraimn楼主2024/9/30 21:41

2.20s2.20s 怎么办,求助。
提交记录

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 3e5 + 10;
int n, m;
int head[N], to[N], nxt[N], val[N], cnt = -1;
void add(int u, int v, int w)
{
	nxt[++cnt] = head[u];
	head[u] = cnt;
	to[cnt] = v;
	val[cnt] = w;
}
bool vis[N];
int dis[N];
void spfa(int u, bool &flg)
{
	if(flg) return;
	vis[u] = 1;
	for(int i = head[u]; ~i && !flg; i = nxt[i])
	{
		int v = to[i];
		if(dis[u] + val[i] < dis[v])
		{
			dis[v] = dis[u] + val[i];
			if(!vis[v]) spfa(v, flg);
			else
			{
				flg = 1;
				cout << "YES\n";
				return;
			}
		}
	}
	vis[u] = 0;
}
void solve()
{
	cnt = -1;
	cin >> n >> m;
	for(int i = 1; i <= n; i++)
	{
		head[i] = -1, dis[i] = 1e9;
		vis[i] = 0;
	}
	for(int i = 1; i <= m; i++)
	{
		int u, v, w;
		cin >> u >> v >> w;
		if(w >= 0)
		{
			add(u, v, w), add(v, u, w);
		}
		else
		{
			add(u, v, w);
		}
	}
	bool flg = 0;
	dis[1] = 0;
	spfa(1, flg);
	if(!flg)
	{
		cout << "NO\n";
	}
//	for(int i = 1; i <= n; i++){
//		cout << dis[i] << " ";
//	}
}
signed main()
{
//	freopen("P3385_9.in", "r", stdin);
//	freopen("P.out", "w", stdout);
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	int t;
	cin >> t;
	while(t--) solve();
	return 0;
}

2024/9/30 21:41
加载中...