社区讨论
【求调悬关】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 条回复,欢迎继续交流。
正在加载回复...