zoukankan      html  css  js  c++  java
  • POJ 3259 Wormholes SPFA判负环

    思路:SPFA判负环
    数组不要开太小……

    (后面附一组测试数组)

    // by SiriusRen
    #include <queue>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    #define N 13555
    int n,cases,m,W,xx,yy,zz,tot,first[N],v[N],w[N],next[N],d[N],in[N];
    bool vis[N];
    void add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
    bool spfa(int x){
        memset(d,0x3f,sizeof(d));
        queue<int>q;
        d[x]=0,q.push(x),vis[x]=1;
        while(!q.empty()){
            int temp=q.front();q.pop();
            vis[temp]=0;
            for(int i=first[temp];~i;i=next[i])
                if(d[v[i]]>d[temp]+w[i]){
                    d[v[i]]=d[temp]+w[i];
                    if(!vis[v[i]]){
                        q.push(v[i]);
                        vis[v[i]]=1;
                        in[v[i]]++;
                        if(in[v[i]]>n)return 1;
                    }
                }
        }
        return 0;
    }
    int main()
    {
        scanf("%d",&cases);
        while(cases--)
        {
            memset(first,-1,sizeof(first)),tot=0;
            memset(vis,0,sizeof(vis));
            memset(in,0,sizeof(in));
            scanf("%d%d%d",&n,&m,&W);
            for(int i=1;i<=m;i++){
                scanf("%d%d%d",&xx,&yy,&zz);
                add(xx,yy,zz),add(yy,xx,zz);
            }
            for(int i=1;i<=W;i++)
            {
                scanf("%d%d%d",&xx,&yy,&zz);
                add(xx,yy,-zz);
            }
            if(spfa(1))puts("YES");
            else puts("NO");
        }
    }
    

    这里写图片描述
    5
    5 10 2
    1 3 277
    3 5 7116
    5 5 3567
    2 4 6023
    5 3 1453
    3 1 1083
    4 1 2414
    1 3 8174
    2 5 6055
    3 2 9029
    3 5 1466
    2 5 88
    5 10 2
    2 4 8688
    3 2 619
    3 5 9103
    5 5 6657
    5 3 8188
    3 3 7513
    5 1 9068
    1 3 5184
    4 5 8318
    4 3 3706
    5 3 591
    5 2 1605
    5 10 2
    4 3 7819
    3 1 4797
    4 3 6176
    1 3 6207
    2 1 9643
    3 1 2436
    2 5 2302
    3 5 401
    4 2 3435
    2 2 4987
    5 3 1173
    3 4 1078
    5 10 2
    1 5 9720
    5 2 7917
    1 5 5038
    2 4 6890
    3 5 9688
    1 5 1063
    1 3 5468
    5 2 5244
    2 2 435
    1 5 5763
    5 4 293
    1 2 929
    5 10 2
    4 3 66
    4 4 8651
    3 4 8304
    4 5 7845
    2 3 2923
    1 3 5425
    1 1 526
    5 4 2853
    1 3 4244
    5 3 6174
    2 5 1090
    1 4 103

    ans:
    YES
    NO
    YES
    NO
    NO

  • 相关阅读:
    html 中 获取百度代码
    org.springframework.web.context.ContextLoaderListener
    短信验证
    云邦互联 免费空间申请
    linux 设置mysql 数据库编码utf8
    windows系统下简单nodejs安装及环境配置
    Oracle数据库创建表ID字段的自动递增
    芒果云 在线代码编辑器
    linux lanmp一件安装包
    linux下 安装php的gettext模块
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532344.html
Copyright © 2011-2022 走看看