zoukankan      html  css  js  c++  java
  • poj 3169 Layout (spfa + 查分约束)

    和 poj  3159 相似 :

    建图 时 多 b-a>=c 这种情况,对于建图时用虚拟节点 不是太懂

    #include <iostream>
    #include <cstdio>
    #include <stack>
    #include <queue>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    #define inf 999999999
    #define V 1001
    #define E 20001
    int pnt[E],cost[E],nxt[E],e;
    int head[V],dist[V],vis[V],cnt[V];
    void add(int u,int v,int c)
    {
        pnt[e]=v;cost[e]=c;nxt[e]=head[u];head[u]=e++;
    }
    int spfa(int s,int n)
    {
        for(int i=1;i<=n;i++)
        vis[i]=0,cnt[i]=0,dist[i]=inf;
        vis[s]=1,cnt[s]++,dist[s]=0;
    
        queue <int> p; p.push(s);
        while(!p.empty())
        {
            int u=p.front();
            vis[u]=0;p.pop();
            for(int i=head[u];i!=-1;i=nxt[i])
            {
                int v=pnt[i];
                if(dist[v]>dist[u]+cost[i])
                {
                    dist[v]=dist[u]+cost[i];
                    if(!vis[v])
                    {
                        vis[v]=1;
                        p.push(v);
                        if((++cnt[v])>=n) return -1;
                    }
                }
            }
        }
        if(dist[n]==inf) return -2;
        return dist[n];
    }
    int main()
    {
        int n,ml,md;
        while(scanf("%d%d%d",&n,&ml,&md)!=EOF)
        {
            e=0;memset(head,-1,sizeof(head));
            while(ml--)
            {
               int u,v,c;cin>>u>>v>>c;
               //if(u>v) swap(u,v);
               add(u,v,c);
            }
            while(md--)
            {
                int u,v,c;cin>>u>>v>>c;
               // if(u<v) swap(u,v);
                add(v,u,-c);
            }
            /*for(int i=2;i<=n;i++)
            add(i,1,0);*/
            cout<<spfa(1,n)<<endl;
        }
        return 0;
    }
    Just a little, maybe change the world
  • 相关阅读:
    Spring boot 远程调试
    SpringBoot 日志框架
    樊登读书 你为什么不道歉
    樊登读书 即兴演讲 MD
    樊登读书 爱因斯坦传 MD
    测试页 MD
    樊登读书 你就是孩子最好的玩具 MD
    樊登读书 非暴力沟通 解读 演讲稿 MD
    樊登读书 孔子传 MD
    樊登读书 高效能人士的七个习惯 MD
  • 原文地址:https://www.cnblogs.com/skyming/p/2482277.html
Copyright © 2011-2022 走看看