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;
    } 

       

  • 相关阅读:
    初步认识,合并集(树)
    20180918-1 词频统计
    20181011-1 每周例行报告
    2018091-2 博客作业
    项目第六天
    项目第五天
    项目第四天
    项目第三天
    总结随笔
    测试报告
  • 原文地址:https://www.cnblogs.com/719666a/p/9571957.html
Copyright © 2011-2022 走看看