zoukankan      html  css  js  c++  java
  • [BZOJ1202][HNOI2005]狡猾的商人

    Solution

       emmm……差分约束裸题。注意收入额有正有负,所以不要像我一样自作聪明连0边。。。

      还有,多组数据不清空,OI爆零见祖宗。。。

      Code

    #include<bits/stdc++.h>
    using namespace std;
    const int N=105,M=1005;
    inline int read(){
        int x=0,w=0;char ch=0;
        while(!isdigit(ch)) w|=ch=='-',ch=getchar();
        while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
        return w?-x:x; 
    }
    struct edge{
        int v,w,last;
    }e[M<<1];
    int tot,tail[N];
    inline void add(int x,int y,int z){
        e[++tot]=(edge){y,z,tail[x]};
        tail[x]=tot;
    }
    int t,n,m,d[N];
    bool vis[N];
    bool dfs_SPFA(int x){
        vis[x]=true;
        for(int p=tail[x];p;p=e[p].last){
            int &v=e[p].v,&w=e[p].w;
            if(d[x]+w<d[v]){
                d[v]=d[x]+w;
                if(vis[v]||!dfs_SPFA(v))
                    return false;     
            }
        }
        vis[x]=false;
        return true;
    }
    bool check(){    
        memset(d,0,sizeof d);
        memset(vis,0,sizeof vis);
        for(int i=0;i<=n;++i)
            if(!dfs_SPFA(i)) return false;
        return true;
    }
    int main(){
        t=read();
        while(t--){    
            tot=0;memset(tail,0,sizeof tail);
            n=read(),m=read();
            while(m--){
                int x=read(),y=read(),z=read();//y,x-1
                add(y,x-1,-z),add(x-1,y,z);
            }
            //for(int i=0;i<n;++i) add(i+1,i,0);
            puts(check()?"true":"false");
        }
        return 0;
    }
    BZOJ1202
  • 相关阅读:
    Java ee第七周作业
    Java ee第六周作业
    Java ee第五周作业
    Java ee第四周作业
    Java ee第三周作业
    第二周作业-web后台应用开发与xml
    Java ee第一周的作业
    在团队项目中我对自己的总结
    两人合作,黄金点游戏
    c语言实现wc功能
  • 原文地址:https://www.cnblogs.com/gosick/p/11246892.html
Copyright © 2011-2022 走看看