题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2007

题意:给出一个n*n的格子,那么顶点显然有(n+1)*(n+1)个。每两个相邻顶点之间有两条边,这两条边是有向的,边上有权值。。左上角为源点,右下角为汇点,求s到t的最小割。

思路:很明显这是一个平面图,将其转化为最
短路。我们将s到t之间连一条边,左下角为新图的源点S,右上角区域为新图的终点T,并且为每个格子编号。由于边是有向的,我们就要分析下这条边应该是哪
个点向哪个点的边。假设下图的红线是答案。比如<S,7>的那条边,必然是从上向下的,<6,5>那条边必然是从下向上
的,<9,6>那条边必然是从左向右的,另外就是从右向左的边,必然是上面的格子到下面的格子。

vector<pair<int,int> > g[N];
int n,dis[N];

int get(int i,int j)
{
    if(j==0||i==n+1) return 0;
    if(i==0||j==n+1) return n*n+1;
    return (i-1)*n+j;
}

priority_queue<pair<int,int> > Q;

int SPFA()
{
    int i,s=0,t=n*n+1;
    FOR0(i,t+1) dis[i]=INF;
    dis[s]=0; Q.push(MP(0,s));
    int u,v,c;
    pair<int,int> p;
    while(!Q.empty())
    {
        p=Q.top();
        Q.pop();
        u=p.second;
        if(u==t) return -p.first;
        FOR0(i,SZ(g[u]))
        {
            v=g[u][i].first;
            c=g[u][i].second;
            if(dis[v]>dis[u]+c)
            {
                dis[v]=dis[u]+c;
                Q.push(MP(-dis[v],v));
            }
        }
    }
}

int main()
{
    RD(n);
    int i,j,x,s,t;
    for(i=1;i<=n+1;i++) for(j=1;j<=n;j++)
    {
        RD(x);
        t=get(i-1,j);
        s=get(i,j);
        g[s].pb(MP(t,x));
    }
    for(i=1;i<=n;i++) for(j=1;j<=n+1;j++)
    {
        RD(x);
        s=get(i,j-1);
        t=get(i,j);
        g[s].pb(MP(t,x));
    }
    for(i=1;i<=n+1;i++) for(j=1;j<=n;j++)
    {
        RD(x);
        s=get(i-1,j);
        t=get(i,j);
        g[s].pb(MP(t,x));
    }
    for(i=1;i<=n;i++) for(j=1;j<=n+1;j++)
    {
        RD(x);
        t=get(i,j-1);
        s=get(i,j);
        g[s].pb(MP(t,x));
    }
    PR(SPFA());
}

BZOJ 2007 海拔(平面图最小割-最短路)的更多相关文章

  1. BZOJ 2007 海拔(平面图最小割转对偶图最短路)

    首先注意到,把一个点的海拔定为>1的数是毫无意义的.实际上,可以转化为把这些点的海拔要么定为0,要么定为1. 其次,如果一个点周围的点的海拔没有和它相同的,那么这个点的海拔也是可以优化的,即把这 ...

  2. bzoj2007/luoguP2046 海拔(平面图最小割转对偶图最短路)

    bzoj2007/luoguP2046 海拔(平面图最小割转对偶图最短路) 题目描述: bzoj  luogu 题解时间: 首先考虑海拔待定点的$h$都应该是多少 很明显它们都是$0$或$1$,并且所 ...

  3. BZOJ2007/LG2046 「NOI2010」海拔 平面图最小割转对偶图最短路

    问题描述 BZOJ2007 LG2046 题解 发现左上角海拔为 \(0\) ,右上角海拔为 \(1\) . 上坡要付出代价,下坡没有收益,所以有坡度的路越少越好. 所以海拔为 \(1\) 的点,和海 ...

  4. bzoj 1001 狼抓兔子 —— 平面图最小割(最短路)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 平面图最小割可以转化成最短路问题: 建图时看清楚题目的 input ... 代码如下: ...

  5. Vijos1734 NOI2010 海拔 平面图最小割

    建立平面图的对偶图,把最小割转化成最短路问题 Dijkstra算法堆优化 (被输入顺序搞WA了好几次T_T) #include <cstdio> #include <cstring& ...

  6. [BZOJ 2007] [Noi2010] 海拔 【平面图最小割(对偶图最短路)】

    题目链接:BZOJ - 2007 题目分析 首先,左上角的高度是 0 ,右下角的高度是 1.那么所有点的高度一定要在 0 与 1 之间.然而选取 [0, 1] 的任何一个实数,都可以用整数 0 或 1 ...

  7. 【BZOJ2007】【NOI2010】海拔(最小割,平面图转对偶图,最短路)

    [BZOJ2007][NOI2010]海拔(最小割,平面图转对偶图,最短路) 题面 BZOJ 洛谷 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域. ...

  8. B20J_2007_[Noi2010]海拔_平面图最小割转对偶图+堆优化Dij

    B20J_2007_[Noi2010]海拔_平面图最小割转对偶图+堆优化Dij 题意:城市被东西向和南北向的主干道划分为n×n个区域.城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向 ...

  9. 【平面图最小割】BZOJ2007-[NOI2010]海拔

    [题目大意] 城市被东西向和南北向的主干道划分为n×n个区域,包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路.现得到了每天每条道路两个方向的人流量.每一个交叉路口都有海拔,每向上爬h ...

随机推荐

  1. 利用API 建立Dependent Value Set

    . 建立SET fnd_flex_val_api.create_valueset_independent(v_set_name ,v_description ,v_security ,v_enable ...

  2. 12.了解或熟悉 C, C++, .NET

    挂起,暂不了解,不过C++略懂,.net虽不懂但是做过实际项目,有能力担当

  3. 3. 星际争霸之php设计模式--简单工厂模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  4. 博创arm板编译内核makefile不兼容问题解决

    导致这种结果的是:Make工具对低版本内核的Makefile一些旧的规则兼容不好,我们只需修改对应的Makefile. 改1:: 原始的:          大概在 1503行 / %/: prepa ...

  5. C#下调用C++ SDK的编码常识

    一组编码规范,通过C#调用C++ 自动封装的C# SDK,会发现面向对象思想的重要性. C++ SDK可以使用自动封装工具转换成C# SDK.但需要遵守如下规则: 1.如果需要对C#对象进行判断,则分 ...

  6. ADB server didn't ACK的解决方法

    异常信息如下: C:\Users\Administrator>adb devices* daemon not running. starting it now on port 5037 *ADB ...

  7. HDU4288:Coder(线段树单点更新版 && 暴力版)

    Problem Description In mathematics and computer science, an algorithm describes a set of procedures ...

  8. json_decode和json_encode

    JSON出错:Cannot use object of type stdClass as array解决方法php再调用json_decode从字符串对象生成json对象时,如果使用[]操作符取数据, ...

  9. 点评js异步加载的4种方式

    主要介绍了点评js异步加载的4种方式,帮助大家更全面的了解js异步加载方式,感兴趣的小伙伴们可以参考一下 js异步加载的4种方式,点评开始. <!DOCTYPE html> <htm ...

  10. 转载WPF SDK研究 之 AppModel

    Jianqiang's Mobile Dev Blog iOS.Android.WP CnBlogs Home New Post Contact Admin Rss Posts - 528 Artic ...