社区讨论

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 条回复,欢迎继续交流。

正在加载回复...