码迷,mamicode.com
首页 > 其他好文 > 详细

[USACO05DEC] 布局 [差分约束]

时间:2019-07-19 22:28:03      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:spfa   open   约束   getchar   include   href   using   pop   min   

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 edge{int 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] 布局 [差分约束]

标签:spfa   open   约束   getchar   include   href   using   pop   min   

原文地址:https://www.cnblogs.com/lxyyyy/p/11214815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!