社区讨论
qiuzhu
P3385【模板】负环参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @m2u6um9x
- 此快照首次捕获于
- 2024/10/29 16:31 去年
- 此快照最后确认于
- 2025/11/04 15:45 4 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int head[1000001],tot;
struct edge{
int nxt,v,edge;
}t[1000001];
bool v[100001];
int d[100001],cnt[100001];
int n;
void add(int x,int y,int z){
t[++tot].nxt=head[x];
head[x]=tot;
t[tot].v=y;
t[tot].edge=z;
}
string spfa(int s){
memset(d,0x3f3f,sizeof(d));
memset(cnt,0,sizeof(cnt));
memset(v,0,sizeof(v));
queue<int> q;
q.push(s);
d[s]=0; v[s]=1;
while(!q.empty()){
int x=q.front();
q.pop();
v[x]=0;
for(int i=head[x];i;i=t[i].nxt){
if(d[t[i].v]>d[x]+t[i].edge){
d[t[i].v]=d[x]+t[i].edge;
cnt[t[i].v]=cnt[x]+1;
if(cnt[t[i].v]>=n) return "YES";
if(!v[t[i].v]){
q.push(t[i].v);
v[t[i].v]=1;
}
}
}
}
return "NO";
}
signed main(){
int T;
cin>>T;
while(T--){
memset(t,0,sizeof(t));
cin>>n;
for(int i=1;i<=n;i++){
int u,v,w;
cin>>u>>v>>w;
add(u,v,w);
if(w>=0) add(v,u,w);
}
cout<<spfa(1)<<"\n";
}
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...