社区讨论

【求调悬关】hack全AC但0pts

P3385【模板】负环参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m2e60iwd
此快照首次捕获于
2024/10/18 11:23
去年
此快照最后确认于
2025/11/04 16:57
4 个月前
查看原帖
玄关,debug 完之后发个警示帖 qwq
CPP
#include <bits/stdc++.h>
//#pragma GCC optimize(2)
using namespace std;

#define int long long
#define rint register int
#define endl '\n'
#define debug(x) cerr << #x << '=' << x << endl;

constexpr int maxn = 6e3 + 5; 

int t, n, tmp1, tmp2, tmp3, nxt[maxn], head[maxn], w[maxn], cnt, dis[maxn], c[maxn], to[maxn];
bool inqueue[maxn]; 

queue <int> que;

inline void addedge(int u, int v, int ww)
{
	 nxt[++cnt] = head[u];
	 w[cnt] = ww;
	 head[u] = cnt;
	 to[cnt] = v;
	 return void();
}

inline void init(void)
{
	memset(nxt, -1, sizeof nxt),
	memset(head, -1, sizeof head);
	memset(c, 0, sizeof c);
	cnt = 0;
	memset(dis, 0x3f, sizeof dis);
	dis[1] = 0;
	memset(inqueue, false, sizeof inqueue);
	que = queue <int> ();
	return void();
}

inline bool SPFA(int s);

signed main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	cin >> t;
	while (t--)
	{
		init();
		cin >> tmp1 >> tmp2 >> tmp3;
		if (tmp3 >= 0)
		{
			addedge(tmp1, tmp2, tmp3),
			addedge(tmp2, tmp1, tmp3);
		}
		else
		{
			addedge(tmp1, tmp2, tmp3);
		}
		cout << (SPFA(1) ? "YES" : "NO") << endl;
	}
	return 0;
}

inline bool SPFA(int s)
{
	que.push(s), inqueue[s] = true;
	while (!que.empty())
	{
		auto t = que.front();
		que.pop();
		inqueue[t] = false;
		for (rint i = head[t]; ~i; i = nxt[i])
		{
			int j = to[i];
			if (dis[j] > dis[t] + w[i])
			{
				dis[j] = dis[t] + w[i];
				c[j] = c[t] + 1;
				if (c[j] >= n)
				{
					return true;
				}
				if (!inqueue[j])
				{
					que.push(j);
					inqueue[j] = true;
				}
			}
		}
	}
	return false;
}
				

回复

3 条回复,欢迎继续交流。

正在加载回复...