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

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

#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. 怎样遍历NodeList对象

    因为NodeList对象是一个类似数组的对象, 且它自带了一个 forEach() 方法, 因此可以使用 forEach() 遍历, 它的用法和 Array 里面的 forEach() 是完全一样的. ...

  2. 利用nfs-client-provisioner动态提供Kubernetes后端存储卷

    原文:https://www.kubernetes.org.cn/3894.html 利用NFS client provisioner动态提供Kubernetes后端存储卷 本文翻译自nfs-clie ...

  3. sql分页优化

    索引优化 注意查询的数据占总数据达到一定量的时候可能导致索引失效.可以用limit或者指定列缩小数据区域可以解决. 以时间orderby排序的limit分页优化 前提用order by分页 limit ...

  4. 大数据集群环境 zookeeper集群环境安装

    大数据集群环境 zookeeper集群环境准备 zookeeper集群安装脚本,如果安装需要保持zookeeper保持相同目录,并且有可执行权限,需要准备如下 编写脚本: vi zkInstall.s ...

  5. opencv图像阈值操作

    使用threshold方法和adaptivethreshold方法对图像进行阈值分割操作. 1.使用threshold方法,设置一个阈值,将大于阈值的值变换为最大值,小于阈值的值变换为0. #-*- ...

  6. tomcat下载地址

    https://archive.apache.org/dist/tomcat/tomcat-6/v6.0.53/bin/ Index of /dist/tomcat/tomcat-6/v6.0.53 ...

  7. maven mvn跳过生成javadoc 打包报错

    遇到javadoc用maven打包报错的问题,起初没发现javadoc,后发现并在pom看到了javadoc的配置. [ERROR] Failed to execute goal org.apache ...

  8. Windows 将FTP 映射到本地文件夹 --简化操作

    转载自yutiantongbu Windows 将FTP 映射到本地文件夹 --简化操作 1.右键我的电脑,选择映射网络驱动器 2.选择"连接到可用与存储文档和图片的网站" 3.接 ...

  9. selenium+python自动化99-清空输入框clear()失效问题解决

    前言 在使用selenium做UI自动化的时候,发现有些弹出窗上的输入框,输入文本后,使用clear()方法无效. 这样会导致再次输入时,字符串不是清空后输入,而是跟着后面输入一长串,导致结果不准. ...

  10. SpringBoot集成MyBatis的Bean配置方式

    SpringBoot集成MyBatis的Bean配置方式 SpringBoot是一款轻量级开发的框架,简化了很多原先的xml文件配置方式,接下来就介绍一下如何不适用XML来配置Mybatis spri ...