1 条题解

  • 1

    杜绝抄袭,仅供参考
    这是我凭借敏锐的眼力和灵活的手指写出的代码,盗窃别人劳动成果是不好的行为

    #include<bits/stdc++.h>
    using namespace std;
    const int N=510,M=5500;
    int n,m1,m2;
    int h[N],e[M],ne[M],w[M],idx;
    int cnt[N],dist[N];
    bool st[N];
    void add(int a,int b,int c)
    {
        e[idx]=b;
        w[idx]=c;
        ne[idx]=h[a];
        h[a]=idx++;
    }
    bool spfa()
    {
        queue<int>q;
        memset(dist,0,sizeof dist);
        memset(st,0,sizeof st);
        memset(cnt,0,sizeof cnt);
        for(int i=1;i<=n;i++)
        {
            st[i]=true;
            q.push(i);
        }
        while(!q.empty())
        {
            int t=q.front();
            q.pop();
            st[t]=false;
            for(int i=h[t];~i;i=ne[i])
            {
                int j=e[i];
                if(dist[j]>dist[t]+w[i])
                {
                    dist[j]=dist[t]+w[i];
                    cnt[j]=cnt[t]+1;
                    if(cnt[j]>=n)
                        return true;
                    if(!st[j])
                    {
                        st[j]=true;
                        q.push(j);
                    }
                }
            }
        }
        return false;
    }
    int main()
    {
        int T;
        cin>>T;
        while(T--)
        {
            memset(h,-1,sizeof h);
            idx=0;
            cin>>n>>m1>>m2;
            while(m1--)
            {
                int a,b,c;
                cin>>a>>b>>c;
                add(a,b,c);
                add(b,a,c);
            }
            while(m2--)
            {
                int a,b,c;
                cin>>a>>b>>c;
                add(a,b,-c);
            }
            if(spfa())
                puts("YES");
            else
                puts("NO");
        }
        return 0;
    }
    
  • 1

信息

ID
2221
难度
8
分类
(无)
标签
递交数
12
已通过
5
通过率
42%
被复制
2
上传者