题目大意

给定一张无向图,需要消耗代价才能使一条边被【数据删除】,求使这张图不连通的最小代价。

一看就是最小割的应用啊。。。

从 \(u\) 到 \(v\),边权为 \(w\) 的边,建两条:一条从 \(u\) 到 \(v\) ,边权为 \(w\),另一条从 \(v\) 到 \(u\),边权也为 \(w\)。

然后直接跑 \(\rm Dinic\) 就行了qwq。

code:

#include<cstring>
#include<cstdio>
#include<queue>
const int M=1e6+5;
struct Edge{
int to,nx,flow;
}e[M<<4];
int n,m,s,t,cnt,d[M],h[M],sur[M],id[1005][1005];
inline void Add(int x,int y,int flow){
e[++cnt]=(Edge){y,h[x],flow};h[x]=cnt;
}
inline int min(const int x,const int y){
return x>y?y:x;
}
inline bool BFS()
{
std::queue<int>q;
memset(d,0,(n*m+1)<<2);
d[s]=1;q.push(s);
while(!q.empty()){
int u=q.front();q.pop();
for(int E=h[u];E;E=e[E].nx)if(e[E].flow){
int v=e[E].to;
if(!d[v]){
d[v]=d[u]+1;
q.push(v);
}
}
}
return d[t];
}
inline int DFS(int u,int flow)
{
if(u==t)return flow;
int used=flow;
for(int&E=sur[u];E;E=e[E].nx)if(e[E].flow){
int v=e[E].to;
if(d[u]+1==d[v])
{
int f=DFS(v,min(used,e[E].flow));
e[E].flow-=f,e[E^1].flow+=f;used-=f;
if(!f)d[v]=0;if(!used)return flow;
}
}
return flow-used;
}
signed main(){
int i,j,ans=0,flow;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)for(j=1;j<=m;++j)id[i][j]=++cnt;
cnt=1;s=id[1][1];t=id[n][m];
for(i=1;i<=n;++i)for(j=1;j<m;++j){
int&x=id[i][j],&y=id[i][j+1];
scanf("%d",&flow);
Add(x,y,flow);Add(y,x,0);
Add(y,x,flow);Add(x,y,0);
}
for(i=1;i<n;++i)for(j=1;j<=m;++j){
int&x=id[i][j],&y=id[i+1][j];
scanf("%d",&flow);
Add(x,y,flow);Add(y,x,0);
Add(y,x,flow);Add(x,y,0);
}
for(i=1;i<n;++i)for(j=1;j<m;++j){
int&x=id[i][j],&y=id[i+1][j+1];
scanf("%d",&flow);
Add(x,y,flow);Add(y,x,0);
Add(y,x,flow);Add(x,y,0);
}
while(BFS()){
for(int u=1;u<=n*m;++u)sur[u]=h[u];
while(int flow=DFS(s,2e9))ans+=flow;
}
printf("%d",ans);
}

LGP4001题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. iOS应用启动main函数

    #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { ...

  2. Linux防火墙(iptables/firewalld)

    Linux防火墙(iptables/firewalld) 目录 Linux防火墙(iptables/firewalld) 一.iptables 1. iptables概述 2. netfilter和i ...

  3. Note/Solution -「洛谷 P5158」「模板」多项式快速插值

    \(\mathcal{Description}\)   Link.   给定 \(n\) 个点 \((x_i,y_i)\),求一个不超过 \(n-1\) 次的多项式 \(f(x)\),使得 \(f(x ...

  4. Diary -「NOI 2021」酱油记

    雨幕浓稠 远近一白 是水雾弥漫的天 还是泡沫撑起的海   雨真大呢.   前几天去 ZH 中学集训没啥好记的,就从会合日开始叭. [Day -1]   逃出 ZH,掉入梦麟.(   高中的同学们忘记带 ...

  5. Solution -「51nod 1868」彩色树

    \(\mathcal{Description}\)   Link & 双倍经验 Link.   给定一棵 \(n\) 个结点的树,每个结点有一种颜色.记 \(g(u,v)\) 表示 \(u\) ...

  6. ConcurrentHashMap (jdk1.7)源码学习

    一.介绍 1.Segment(分段锁) 1.1 Segment 容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并 ...

  7. 疑难杂症:运用 transform 导致文本模糊的现象探究

    在我们的页面中,经常会出现这样的问题,一块区域内的文本或者边框,在展示的时候,变得特别的模糊,如下(数据经过脱敏处理): 正常而言,应该是这样的: emmm,可能大图不是很明显,我们取一细节对比,就非 ...

  8. Aesop_secret的writeup

    大家好,这次我为大家带来的是攻防世界misc部分Aesop_secret的writeup.    先下载附件,是一个压缩包,紧接着解压,发现一个gif文件.用浏览器打开,注意到这个gif文件播放时每一 ...

  9. [题解]Codeforces Round #519 - C. Smallest Word

    [题目] C. Smallest Word [描述] IA有一个由若干个'a'和'b'组成的字符串,IA可以翻转该字符串的任意长的前缀,IA想通过这样的操作得到一个字典序最小的字符串,求一种可能的翻转 ...

  10. webpack5学习

    目录 1. Why Webpack? 2. Webpack上手 2.1 Webpack功能 2.2 需要安装的包 2.3 简易命令 3. Webpack配置文件 3.1 局部webpack打包 3.2 ...