zoukankan      html  css  js  c++  java
  • 差分约束系统 :糖果

    https://loj.ac/problem/2436

    #include<bits/stdc++.h>
    #define inf 0x3f3f3f3f
    using namespace std;
    long long n,k,x,a,b;
    struct node{
        long long to,next,w;
    }e[300005];
    long long head[300005],num=0;
    void add(long long x,long long y,long long c)
    {
        e[++num].next=head[x],e[num].to=y,e[num].w=c,head[x]=num;
    }
    long long dis[100005];
    bool vis[100005];
    queue<long long>q;
    long long times[100005];
    void spfa()
    {
        memset(dis,0,sizeof dis);
        memset(vis,0,sizeof vis);
        memset(times,0,sizeof times);
        q.push(0);
        vis[0]=1;
        dis[0]=0;
        while(!q.empty())
        {
            long long u=q.front();
            q.pop();
            vis[u]=0;
            for(long long i=head[u];i!=-1;i=e[i].next){
                long long v=e[i].to;
                if(dis[v]<dis[u]+e[i].w)
                {
                    times[v]++;
                    if(times[v]>=n){
                        cout<<-1;exit(0);
                    }
                    dis[v]=dis[u]+e[i].w;
                    if(!vis[v])
                    {
                        q.push(v);vis[v]=1;
                    }
                }
            }
        }
        long long ans=0;
        for(long long i=1;i<=n;i++)
        {
            ans+=dis[i];
        }
        printf("%lld",ans);
        return;
    }
    int main()
    {
        
        memset(head,-1,sizeof head);
        scanf("%d%d",&n,&k);
        for(long long i=1;i<=k;i++)
        {
            int x,y,z;scanf("%d%d%d",&x,&y,&z);
            if(x==1)add(y,z,0),add(z,y,0);
            else if(x==2){if(y==z){cout<<"-1";return 0;}add(y,z,1);}
            else if(x==3)add(z,y,0);
            else if(x==4){if(y==z){cout<<"-1";return 0;}add(z,y,1);}
            else if(x==5)add(y,z,0);
        }
        for(int i=n;i;--i)add(0,i,1);
        spfa();
        return 0;
    } 

       

  • 相关阅读:
    C_数据结构_栈
    C_数据结构_链表
    C_数据结构_数组的修改和删除
    C_数据结构_数组
    Python_闭包_27
    Python_函数的镶嵌和作用域链_26
    P1428 小鱼比可爱
    P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows
    P2946 [USACO09MAR]牛飞盘队Cow Frisbee Team
    codevs 2173 忠诚
  • 原文地址:https://www.cnblogs.com/719666a/p/9571957.html
Copyright © 2011-2022 走看看