题意概述:给出一张无向图,每条边有一个权值,割掉这条边代价为它的权值,求使起点不能到达终点的最小代价。

显然能看出这是个最小割嘛,然后最小割=最大流,建图的时候特殊处理一下再跑个最大流就好了。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn=1e6,inf=1e9;
inline int read()
{
register int X=;register char ch=;
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<='') X=(X<<)+(X<<)+ch-'',ch=getchar();
return X;
}
inline void write(int x)
{
if(x>) write(x/);
putchar(x%+'');
}
struct edge
{
int next,to,c,f;
}e[maxn];
int head[maxn],cur[maxn],lev[maxn],s,t,n,m,tot;
void add(int u,int v,int c)
{
e[tot].next=head[u],e[tot].c=c,e[tot].f=,e[tot].to=v,head[u]=tot++;
e[tot].next=head[v],e[tot].c=,e[tot].f=,e[tot].to=u,head[v]=tot++;
}
bool bfs()
{
memset(lev,,sizeof(lev));
queue<int> q;
q.push(s);
lev[s]=;
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=head[u];i!=-;i=e[i].next)
{
int v=e[i].to;
if(!lev[v]&&e[i].c>e[i].f)
{
q.push(v);
lev[v]=lev[u]+;
}
}
}
return lev[t]!=;
}
int dfs(int u,int cpf)
{
if(u==t) return cpf;
int adf=;
for(int i=(cur[u]!=?cur[u]:head[u]);i!=-&&adf<cpf;i=e[i].next)
{
int v=e[i].to;
if(lev[v]==lev[u]+&&e[i].c>e[i].f)
{
int tmp=dfs(v,min(e[i].c-e[i].f,cpf-adf));
e[i].f+=tmp,e[i^].f-=tmp;
adf+=tmp;
cur[u]=i;
}
}
return adf;
}
int dinic()
{
int maxflow=;
while(bfs())
{
memset(cur,,sizeof(cur));
maxflow+=dfs(s,inf);
}
return maxflow;
}
int main()
{
n=read(),m=read(),s=read(),t=read();
memset(head,-,sizeof(head));
for(int i=;i<=m;i++)
{
int u=read(),v=read(),c=read();
add(u,v,c);
}
write(dinic()),putchar('\n');
}

ps:由于写这篇博客时代码并不在手上所以找了个最大流的模板,连边的时候改一下就好了,等找到代码或者重写一份再放一个完整版。

[bzoj1001]狼抓兔子 最小割的更多相关文章

  1. [BJOI2006][bzoj1001] 狼抓兔子 [最小割]

    题面: 传送门 思路: 其实就是一道最小割的题目...... 我的写法加了两个优化,常数比较小,所以过掉了 一个是当前弧,一个是若当前点并不能流出去,那么标记dep为-1 听说正解是对偶图最短路?可以 ...

  2. BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 19528  Solved: 4818[Submit][ ...

  3. bzoj1001: [BeiJing2006]狼抓兔子 -- 最小割

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...

  4. BZOJ 1001 狼抓兔子 (最小割转化成最短路)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 27715  Solved: 7134[Submit][ ...

  5. BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  6. BZOJ1001[BeiJing2006]狼抓兔子——最小割

    题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

  7. 【bzoj1001】[BeiJing2006]狼抓兔子 最小割+对偶图+最短路

    题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

  8. BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路

    原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html 题目传送门 - BZOJ1001 题意 长成上面那样的网格图求最小割. $n,m\leq ...

  9. bzoj1001/luogu4001 狼抓兔子 (最小割/平面图最小割转对偶图最短路)

    平面图转对偶图:先在原图中加一个s->t的边,然后对每个面建一个点,对每条分隔两个面的边加一条连接这两个面对应点的边,边权等于原边权. 然后从刚才加的s->t分割出来的两面对应的两个点跑最 ...

随机推荐

  1. sparksql读取hive数据报错:java.lang.RuntimeException: serious problem

    问题: Caused by: java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: ...

  2. windows开机自启动的django服务

    做了一个django项目,想部署在win10的笔记本电脑上,可以开机后台自动启动.找了很多的方法.最后成功了. 参考了这个博主的内容. https://blog.csdn.net/qq_3595961 ...

  3. Microsoft Project项目管理工具

    下载 网址 安装 要注意以前安装的32位的Office或者Visio时这里会检测到,这里也要装32位的.不能根据系统位数来了.下载前先看清你用的Microsoft的软件是什么版本. 使用 新建空白项目 ...

  4. 【转载】华为荣耀V9手机如何设置WiFi热点共享

    有时候我们在电脑的时候发现没有无线网络以及有线网络,如果你的手机有相应网络,并且流量足够(当前很多手机流量套餐都是不限量了),可以开启手机上的Wifi热点进行流量共享使用,开启Wifi流量热点后,电脑 ...

  5. 记录一次git回滚代码

    老大临时让更新一版代码到本地,熟练的git fetch/git merge 之后,出来了一批改动的文件,但是并不是我改动的. 我以为是版本迭代出来的其他同事改的,我就直接给add commit到我的版 ...

  6. springboot中modbus使用

    pom.xml配置: false true ias-snapshots Infinite Automation Snapshot Repository true false ias-releases ...

  7. 为了做好精益化,精益达选择了它?(MES应用案例)

    企业介绍 郑州精益达汽车零部件有限公司(下文简称“精益达”)是宇通客车重要的业务组成部分,也是宇通集团重要的支柱业务之一,主要从事汽车零部件产品研发.制造.销售与服务.在郑州市拥有三个生产厂区,工艺技 ...

  8. element ui axios使用formdata提交数据

    axios({ //formdata提交 headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, transformRequ ...

  9. 整型 字符串方法 for循环

    整型 # 整型 -- 数字 (int) # 用于比较和运算的 # 32位 -2 ** 31 ~ 2 ** 31 -1 # 64位 -2 ** 63 ~ 2 ** 63 -1 # + - * / // ...

  10. Linux命令——mount、umount

    前言 由于引入了LVM.RAID技术,导致OS时别到的磁盘已经不单纯是事实意义上的物理磁盘(虽然OS认为他是物理盘).传统文件系统与分区可以认为是1:1关系,但是现在一个分区可以有多个FS,一个FS也 ...