[USACO05DEC] 布局 [差分约束]

Posted lxyyyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[USACO05DEC] 布局 [差分约束]相关的知识,希望对你有一定的参考价值。

P4878 [USACO05DEC] 布局    #10090. 「一本通 3.4 练习 2」布局 Layout

好像大家都打的最短路

懒得想了 打的最长路 然后因为我瞎建边 所以最后输出得输出其相反数

#include<bits/stdc++.h>
using namespace std;
#define Max(x,y) (x)>(y)?(x):(y)
#define Min(x,y) (x)>(y)?(y):(x)
#define ll long long
#define rg register
const int N=1e5+5,M=10000+5,inf=0x3f3f3f3f,P=99999997;
int n,ml,md,qd1,qdn;
ll ans=0;
bool l1[N];
template <class t>void rd(t &x)
    x=0;int w=0;char ch=0;
    while(!isdigit(ch)) w|=ch==-,ch=getchar();
    while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    x=w?-x:x;


int head[N],tot=0;
struct edgeint v,w,nxt;e[N<<2];
void add(int u,int v,int w)
    e[++tot]=(edge)v,w,head[u],head[u]=tot;


int dis[N],use[N];
bool vis[N];
void spfa(int x)
    for(int i=1;i<=n;++i) vis[i]=use[i]=0,dis[i]=-inf;
    deque<int>q;
    q.push_back(x),vis[x]=1,dis[x]=use[x]=0;
    while(!q.empty())
        int u=q.front();
        q.pop_front(),vis[u]=0;
        ++use[u];
        if(use[u]>=n) puts("-1");exit(0);
        for(int i=head[u],v,w;i;i=e[i].nxt)
            v=e[i].v,w=e[i].w;
            if(dis[v]<dis[u]+w)
                dis[v]=dis[u]+w;
                if(!vis[v])
                    if(q.empty()) q.push_back(v);
                    else if(dis[v]>dis[q.front()]) q.push_front(v);
                         else q.push_back(v);
                    vis[v]=1;
                
            
        
    



int main()
    freopen("in2.txt","r",stdin);
    rd(n),rd(ml),rd(md);
    for(int i=1;i<=n;++i) add(0,i,0);
    for(int i=1,a,b,w;i<=ml;++i)
        rd(a),rd(b),rd(w);
        add(a,b,-w);
    
    for(int i=1,a,b,w;i<=md;++i)
        rd(a),rd(b),rd(w);
        add(b,a,w);
    
    spfa(0);
    spfa(1);
    if(dis[n]==-inf) puts("-2");
    else printf("%d",-dis[n]);
    return 0;

 

以上是关于[USACO05DEC] 布局 [差分约束]的主要内容,如果未能解决你的问题,请参考以下文章

P4878 [USACO05DEC]layout布局

Luogu P4878 [USACO05DEC]布局

luoguP3128 [USACO15DEC]最大流Max Flow 题解(树上差分)

P3128 [USACO15DEC]最大流Max Flow (树上差分)

bzoj4390: [Usaco2015 dec]Max Flow(LCA+树上差分)

Tips