社区讨论
求调
P3385【模板】负环参与者 2已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mhjv0864
- 此快照首次捕获于
- 2025/11/04 08:57 4 个月前
- 此快照最后确认于
- 2025/11/04 08:57 4 个月前
https://www.luogu.com.cn/record/210863815
CPP#include <bits/stdc++.h>
using namespace std;
//#define int long long
int n,m;
int cnt;
struct NODE
{
int v,w;
int ne;
} a[100005];
int head[100005];
int c[2005];
bool f[2005];
int b[2005];
queue<int> q;
void add(int u,int v,int w)
{
cnt++;
a[cnt].v = v;
a[cnt].w = w;
a[cnt].ne = head[u];;
head[u] = cnt;
}
void spfa()
{
memset(b,0x3f,sizeof b);
memset(f,0,sizeof f);
while(!q.empty()) q.pop();
q.push(1);
f[1] = 1;
b[1] = 0;
while(!q.empty())
{
int u = q.front();
q.pop();
for(int i=a[u].ne;i;i=a[i].ne)
{
int v = a[i].v;
int w = a[i].w;
if(b[u]+w<b[v])
{
b[v] = b[u]+w;
c[v]++;
if(c[v]>=n)
{
cout<<"YES\n";
return;
}
if(!f[v])
{
f[v] = 1;
q.push(v);
}
}
}
}
cout<<"NO\n";
}
signed main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int q;
cin>>q;
while(q--)
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v,w;
cin>>u>>v>>w;
add(u,v,w);
if(w>=0) add(v,u,w);
}
spfa();
}
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...