zoukankan      html  css  js  c++  java
  • POJ 3169_Layout

    大早上水一发=。=

    题意:

    n头牛按编号顺序站成一列,给定n头牛之间的位置关系,求出第n头牛和第一头牛之间的最大距离。

    分析:

    差分约束系统,这题不等式关系还是挺好找的。注意因为按照顺序排列,所以有d[i+1]>=d[i]

    代码:

    #include<cstdio>
    #include<iostream>
    using namespace std;
    struct edge{int u, v, w; };
    const int maxn = 1005, maxm = 25005, INF = 0X3fffffff;
    edge e[maxm];
    int d[maxn];
    int n, tot;
    int bellmanford()
    {
        fill(d, d+n+1,INF);
        d[1] = 0;
        for(int i = 1; i <= n; i++){
            for(int j = 0; j < tot; j++){
                edge te = e[j];
                if(d[te.u] < INF&&d[te.v]>d[te.u]+te.w){
                    d[te.v] = d[te.u] + te.w;
                    if(i == n) return -1;
                }
            }
        }
        return d[n]==INF?-2:d[n];
    }
    int main (void)
    {
        int ml, md;
        int a, b, d;
        scanf("%d%d%d",&n, &ml, &md);
        for(int i = 1; i < n; i++){
            e[tot++] = (edge){i +1, i, 0};
        }
        for(int i = 0; i < ml; i++){
            scanf("%d%d%d",&a,&b,&d);
            e[tot++] = (edge){a, b, d};
        }
        for(int i = 0; i < md; i++){
            scanf("%d%d%d",&a,&b,&d);
            e[tot++]=(edge){b, a, -d};
        }
    
        printf("%d
    ", bellmanford());
        return 0;
    }
    
  • 相关阅读:
    POJ 1300 Open Door
    POJ 2230 Watchcow
    codevs 1028 花店橱窗布置
    codevs 1021 玛丽卡
    codevs 1519 过路费
    codevs 3287 货车运输
    codevs 3305 水果姐逛水果街二
    codevs 1036 商务旅行
    codevs 4605 LCA
    POJ 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/Tuesdayzz/p/5758800.html
Copyright © 2011-2022 走看看