社区讨论
QAQ为什么我还是被卡了???
P3385【模板】负环参与者 4已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @mi6zcm1l
- 此快照首次捕获于
- 2025/11/20 13:17 4 个月前
- 此快照最后确认于
- 2025/11/20 15:44 4 个月前
RT,是不是我太黑了QAQ,第1,9个点WA了QAQ。。。。。
C#include<bits/stdc++.h>
using namespace std;
#define maxn 100010
int t,n,m,x,y,v,tot,next[maxn],to[maxn],head[maxn],w[maxn],vis[maxn],dis[maxn],f[maxn],cnt[maxn];
inline void add(int i,int j,int v)
{
next[++t]=head[i];
to[t]=j;
w[t]=v;
head[i]=t;
}
inline int spfa()
{
queue<int> q;
q.push(1),dis[1]=0,f[1]=true,cnt[1]=1;
while(!q.empty())
{
int now=q.front();q.pop();
f[now]=false;
for(int y,i=head[now];i;i=next[i])
{
if(f[y=to[i]]) continue;
if(dis[y]>dis[now]+w[i])
{
cnt[y]=cnt[now]+1;
dis[y]=dis[now]+w[i];
if(cnt[y]>=n)
return false;
if(!f[y])
q.push(y),f[y]=true;
}
}
}
return true;
}
int main()
{
cin>>tot;
for(register int i=1;i<=tot;i++)
{
cin>>n>>m;
memset(cnt,0,sizeof(cnt));memset(f,0,sizeof(f));memset(dis,0x3f3f3f3f,sizeof(dis));memset(head,0,sizeof(head));memset(to,0,sizeof(to));memset(w,0,sizeof(w));memset(next,0,sizeof(next));
for(register int j=1;j<=m;j++)
{
int x,y,z;
cin>>x>>y>>z;
if(z<0)
add(x,y,z);
else add(y,x,z),add(x,y,z);
}
if(!spfa())
printf("YE5");
else
printf("N0");
printf("\n");
}
return 0;
}
回复
共 11 条回复,欢迎继续交流。
正在加载回复...