题意:有N个城市,现在城市S出现了一伙歹徒,他们想运送一些炸弹到D城市,不过警方已经得到了线报知道他们的事情,不过警察不知道他们所在的具体位置,所以只能采取封锁城市的办法来阻断暴徒,不过封锁城市是需要花费一定代价的,由于警局资金比较紧张,所以想知道如果完全阻断暴徒从S城市到达D城市的最小需要花费的代价。

解题思路:这道题目还是难在建图,如果我们仔细分析这道题的话,它要求的是最小的花费使得s点与d点不连通。。如果熟悉最小割最大流定理的话,那么这个题目又可以转化到网络流的问题上来。。此外,这道题目的费用是在顶点上,而普通的网络流的容量都是在边上,所以又是拆点,把每个点都拆成两份,之间连一条费用边。。。最后要求最小割就是求最大流。。好题!

AC:

#include<stdio.h>
#include<algorithm>
#include<queue>
#include<string.h>
using namespace std;const int MAXN = 505;
const int oo = 1e8+7;struct Edge{int v, flow, next;}edge[MAXN*MAXN];
int Head[MAXN], cnt;
int layer[MAXN];///分层void InIt()
{cnt = 0;memset(Head, -1, sizeof(Head));
}
void AddEdge(int u, int v, int flow)
{edge[cnt].v = v;edge[cnt].flow = flow;edge[cnt].next = Head[u];Head[u] = cnt++;swap(u, v);edge[cnt].v = v;edge[cnt].flow = 0;edge[cnt].next = Head[u];Head[u] = cnt++;
}
bool bfs(int start, int End)
{queue<int> Q;Q.push(start);memset(layer, 0, sizeof(layer));layer[start] = 1;while(Q.size()){int u = Q.front();Q.pop();if(u == End)return true;for(int j=Head[u]; j!=-1; j=edge[j].next){int v = edge[j].v;if(layer[v] == false && edge[j].flow){layer[v] = layer[u] + 1;Q.push(v);}}}return false;
}
int dfs(int u, int MaxFlow, int End)
{if(u == End)return MaxFlow;int uflow = 0;for(int j=Head[u]; j!=-1; j=edge[j].next){int v = edge[j].v;if(layer[v]==layer[u]+1 && edge[j].flow){int flow = min(MaxFlow-uflow, edge[j].flow);flow = dfs(v, flow, End);edge[j].flow -= flow;edge[j^1].flow += flow;uflow += flow;if(uflow == MaxFlow)break;}}if(uflow == 0)layer[u] = 0;return uflow;
}
int dinic(int start, int End)
{int MaxFlow = 0;while(bfs(start, End) == true)MaxFlow += dfs(start, oo, End);return MaxFlow;
}int main()
{int N, M;while(scanf("%d%d", &N, &M) != EOF){int i, u, v, cost, start, End;InIt();scanf("%d%d", &start, &End);for(i=1; i<=N; i++){scanf("%d", &cost);AddEdge(i, i+N, cost);}while(M--){scanf("%d%d", &u, &v);AddEdge(u+N, v, oo);AddEdge(v+N, u, oo);}printf("%d\n", dinic(start, End+N));}return 0;
}

hdu 4289(最小割最大流定理)相关推荐

  1. hdu 3046(最小割最大流)

    题意:在一个单位方格边长为1的矩阵中藏着灰太狼和它的同伴,等待着喜羊羊和它的同伴,为了不让喜羊羊和同伴被抓住,我们可以在矩形草坪中设置单位长度为1的栅栏,求最短的栅栏长度. 解题思路:这道题是要把狼和 ...

  2. 网络流 最大流 最小割 费用流

    [腾讯文档]网络流初步 网络流初步 文章目录 网络流初步 一.网络流简介 1. 网络 2. 流 3. 再次理解网络流 二.常见题型(三种) 三.相关问题对应算法介绍 1.最大流 (1) FF算法 - ...

  3. HDU-1569 方格取数(2) 最小割最大流

    题义很简单,还记得方格取数(1)的时候,使用状态压缩写的,这里由于行列数太大,因此无法进行压缩.所以要运用的最小割最大流的思想来解这道题. 大概是这样分析的,题义是要我们求在一个方格内取出N个点,使得 ...

  4. Destroying The Graph 最小点权集--最小割--最大流

    Destroying The Graph 构图思路: 1.将所有顶点v拆成两个点, v1,v2 2.源点S与v1连边,容量为 W- 3.v2与汇点连边,容量为 W+ 4.对图中原边( a, b ), ...

  5. 图像分割经典算法--《最小割最大流》(Minimum Cut——Max Flow)

    1.算法介绍 最小割算法(Minimum Cut)是图像分割的经典算法之一,同时也在"Graph Cut"."Grab Cut"等算法中都有被使用过.最小割最大 ...

  6. HDU - 4289 Control(最小割-最大流)

    题目链接:点击查看 题目大意:给出一张n个点m条边的无向图,一些恐怖分子要从点st到点ed去安装炸弹,为了阻止他们这样做,必须在某些点布置警察,只要恐怖分子路过警察所在的点就会被逮捕,在某个点布置警察 ...

  7. HDU - 5889 Barricade(最短路+最小割-最大流)

    题目链接:点击查看 题目大意:给出一张无向图,每条边的长度为1,第i条边建立障碍的花费为wi,题目要求在保证从1到n号点的所有的最短路径上,都有障碍的情况下的最小费用 题目分析:要求最短路上的最小割, ...

  8. hdu 3046(最小割)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3046 思路:最小割的入门题,设源点为0,汇点为n*m+1,源点与点为2的连一天容量为inf的边,汇点与 ...

  9. hdu 3987(最小割的边数)

    题意:给出一张有n个点的图,有的边又向,有的边无向,现在要你破坏一些路,使得从点0无法到达点n-1.破坏每条路都有一个代价.求在代价最小的前提下,最少需要破坏多少条道路.(就是说求在最小割的前提下,最 ...

最新文章

  1. CS9:转载:怎样配置Win Radius 当使用Cisco交换机时
  2. C#线程系列(3):线程池和文件下载服务器
  3. 第三部分:Idea重构总结
  4. php时间2小时以前,PHP版实现友好的时间显示方式(例如:2小时前)
  5. Unity Pixel 人物设计(1)
  6. execl按数值分类
  7. 《TCP/IP详解》学习笔记(四):ICMP 协议、ping 和 Traceroute
  8. python可变参数函数二阶导数公式_python中函数的可变参数
  9. python小练习—名片管理系统(增、删、改、查、数据本地保存)
  10. Automated Feature Engineering Basics
  11. php mysql 类型_php mysql bigint 类型
  12. 周志华教授专著《集成学习:基础与算法》上市,豆瓣满分森林书破解AI实践难题
  13. 零零碎碎写的脚本(四)自动监控某系统服务状态并警报
  14. Great Song
  15. 计算机毕业设计——基于SSM框架的公寓租房管理系统的设计与实现
  16. gdi与gdi+绘图效率_.NET和GDI +进行绘图[第1部分:基础知识]
  17. springboot配置https(阿里云免费证书)
  18. Android 4.0 SDK新特性
  19. 多元线性回归-Lasso
  20. parseInt() 函数的奇怪行为

热门文章

  1. 深度案例 | 神策数据如何助力房产企业数字化转型快速落地?
  2. 短融网杨夏耘:数据如何驱动金融科技业务升级?
  3. linux查看java进程cpu占用过高
  4. Qt之QSlider
  5. 初涉.....编码__列表__字典
  6. H盘由于IO设备错误,无法运行此项请求要怎样找到资料
  7. Google API 设计指南 - 前言
  8. tomcat https 配置
  9. 2020 MCM Meritorious Winner
  10. 苹果如果无法弹出⏏️