zoukankan      html  css  js  c++  java
  • 【刷题】【差分约束】布局

    两组hack数据真的很hack

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<queue>
    using namespace std;
    int max(int a,int b)
    { return a>b ?a :b; }
    int n,m1,m2;
    const int N=1003,M=3e4+3;
    
    int tot,head[N];
    int ev[M],ew[M],enx[M];
    void add(int u,int v,int w)
    { ev[++tot]=v,ew[tot]=w,enx[tot]=head[u],head[u]=tot; }
    
    int dis[N],tm[N];
    bool in[N];
    void SPFA(int st)
    {
        memset(dis,0x3f,sizeof(dis));
        memset(tm,0,sizeof(tm));
        queue <int> q;
        q.push(st),dis[st]=0;
        
        while(!q.empty() )
        {
            int t=q.front() ;q.pop() ;
            for(int i=head[t];i;i=enx[i])
            {
                int v=ev[i];
                
                if(dis[v]>dis[t]+ew[i])
                {
                    dis[v]=dis[t]+ew[i];
                    if(++tm[v]>=n)
                    {
                        dis[n]=-1;//但是,由于不合法的优先级在前 
                        return;//如果有正环但是,不与1相连,就错了  
                    }
                    if(!in[v])
                        in[v]=true,q.push(v); 
                }
            }
            in[t]=false;
        }
        if(dis[n]==dis[n+1]) dis[n]=-2;
    }
    
    int main()
    {
        scanf("%d%d%d",&n,&m1,&m2);
        int u,v,w;
        for(int i=1;i<=m1;i++)
            scanf("%d%d%d",&u,&v,&w),add(u,v,w);
        for(int i=1;i<=m2;i++)
            scanf("%d%d%d",&u,&v,&w),add(v,u,-w);
        for(int i=2;i<=n;i++)
            add(i,i-1,0);
        
        //bug解决方案,跑两遍spfa,一遍从0出发!!! 
        for(int i=1;i<=n;i++)
            add(0,i,0);
        SPFA(0);
        if(dis[n]==-1)
        {
            printf("-1
    ");
            return 0;
        }
        SPFA(1);
        printf("%d
    ",dis[n]);
        
        return 0;
    } 
  • 相关阅读:
    网页字体设置你了解吗?
    CSS 定位 (Positioning)
    常用CSS缩写语法总结
    CSS 教程
    CSS Reset(CSS重置)
    边框模拟小三角形
    CSS sprites
    border:none和border:0的区别
    css display属性
    css的postion属性
  • 原文地址:https://www.cnblogs.com/xwww666666/p/11715461.html
Copyright © 2011-2022 走看看