zoukankan      html  css  js  c++  java
  • hdu 1384 Intervals 差分约束系统

    注意初始化

    #include "stdio.h"
    #include "string.h"
    #include "algorithm"
    #include "queue"
    #include "vector"
    using namespace std;
    const int inf=0x7FFFFFFF;
    struct node
    {
        int to;
        int c;
    };
    int d[50005],inq[50005];
    vector<node>t[50005];
    queue<int>q;
    
    int main()
    {
        int i,n,u,v,w,k,mx,mn;
        node m;
        while(~scanf("%d",&n))
        {
            for(i=0;i<50005;i++)
            {
                t[i].clear();
                d[i]=-inf;
                inq[i]=0;
            }
    
            while(!q.empty()) q.pop();
            mx=0;mn=99999;
            for(i=0;i<n;i++)
            {
                scanf("%d%d%d",&u,&v,&w);
                m.to=v+1;
                m.c=w;
                t[u].push_back(m);
                if(mx<v) mx=v;
                if(mn>u) mn=u;
            }
    
            for(i=mn;i<=mx;i++)
            {
                m.to=i;
                m.c=-1;
                t[i+1].push_back(m);
    
                m.to=i+1;
                m.c=0;
                t[i].push_back(m);
            }
            d[mn]=0;
            inq[mn]=1;
            q.push(mn);
            while(!q.empty())
            {
                u=q.front();
                q.pop();
                inq[u]=0;
                for(i=0;i<t[u].size();i++)
                {
                    v=t[u][i].to;
                    k=t[u][i].c+d[u];
    
                    if(d[v]<k)
                    {
                        d[v]=k;
                        if(inq[v]==0)
                        {
                            inq[v]=1;
                            q.push(v);
                        }
                    }
                }
            }
    
            printf("%d
    ",d[mx+1]);
        }
        return 0;
    }
    #include "stdio.h"
    #include "string.h"
    #include "algorithm"
    #include "queue"
    #include "vector"
    using namespace std;
    const int inf=0x7FFFFFFF;
    struct node
    {
        int to;
        int c;
    };
    int d[50005],inq[50005];
    vector<node>t[50005];
    queue<int>q;
    
    int main()
    {
        int i,n,u,v,w,k,mx,mn;
        node m;
        while(~scanf("%d",&n))
        {
            for(i=0;i<50005;i++)
            {
                t[i].clear();
                d[i]=inf;
                inq[i]=0;
            }
    
            while(!q.empty()) q.pop();
            mx=0;mn=99999;
            for(i=0;i<n;i++)
            {
                scanf("%d%d%d",&u,&v,&w);
                m.to=u;
                m.c=-w;
                t[v+1].push_back(m);
                if(mx<v) mx=v;
                if(mn>u) mn=u;
            }
    
            for(i=mn;i<=mx;i++)
            {
                m.to=i+1;
                m.c=1;
                t[i].push_back(m);
    
                m.to=i;
                m.c=0;
                t[i+1].push_back(m);
            }
    
            inq[mx+1]=1;
            d[mx+1]=0;
            q.push(mx+1);
            while(!q.empty())
            {
                u=q.front();
                q.pop();
                inq[u]=0;
                for(i=0;i<t[u].size();i++)
                {
                    v=t[u][i].to;
                    k=t[u][i].c+d[u];
    
                    if(d[v]>k)
                    {
                        d[v]=k;
                        if(inq[v]==0)
                        {
                            inq[v]=1;
                            q.push(v);
                        }
                    }
                }
            }
    
            printf("%d
    ",-d[mn]);
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    开发基于键值对形式的语言管理器LauguageManager
    基于Json(键值对)配置文件的配置管理器
    Unity换装效果
    技能冷却效果的制作
    c#中的反射
    委托和事件的区别
    字典
    有序列表
    链表

  • 原文地址:https://www.cnblogs.com/xryz/p/4847876.html
Copyright © 2011-2022 走看看