最小割的好题,可用作模板。

//Dinic+枚举字典序最小的最小割点集
//Time:1032Ms Memory:1492K
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std; #define MAXN 205
#define INF 0x3f3f3f3f int N, S, T;
int s,t;
int sres[2*MAXN][2*MAXN]; //source-res
int res[2*MAXN][2*MAXN];
int d[2*MAXN];
int cut[MAXN]; //最小割点集
bool v[2*MAXN]; bool bfs()
{
memset(d, -1, sizeof(d));
queue<int> q;
q.push(s); d[s] = 0;
while(!q.empty() && d[t] == -1){
int cur = q.front(); q.pop();
for(int i = 1; i <= t; i++)
{
if(d[i] == -1 && res[cur][i])
{
d[i] = d[cur] + 1;
q.push(i);
}
}
}
return d[t] != -1;
} int dfs(int x, int sum)
{
if(x == t || sum == 0) return sum;
int src = sum;
for(int i = 1; i <= t; i++)
{
if(d[i] == d[x] + 1 && res[x][i])
{
int tmp = dfs(i, min(sum, res[x][i]));
res[x][i] -= tmp;
res[i][x] += tmp;
sum -= tmp;
}
}
return src - sum;
} int Dinic()
{
memcpy(res, sres, sizeof(sres));
int maxFlow = 0;
while(bfs())
maxFlow += dfs(s,INF);
return maxFlow;
} int main()
{
//freopen("in.txt", "r", stdin); while(~scanf("%d%d%d", &N,&S,&T))
{
memset(sres, 0 ,sizeof(sres));
s = 0; t = 2*N+1;
sres[0][S] = sres[T+N][t] = INF;
for(int i = 1; i <= N; i++)
{
sres[i][i + N] = 1;
for(int j = 1; j <= N; j++)
{
int num;
scanf("%d", &num);
if(num && i != j) sres[i+N][j] = INF;
}
}
sres[S][S+N] = sres[T][T+N] = INF;
int ans = Dinic();
if(ans == INF){ //不可分开
printf("NO ANSWER!\n");
continue;
}
else {
printf("%d\n", ans);
if(ans == 0) continue; //已经分开
} //枚举最小割点集
int len = 0, tmp = ans;
for(int i = 1; i <= N && tmp; i++)
{
if(i == S || i == T) continue;
if(res[i][i+N]) continue;
sres[i][i+N] = 0;
int k = Dinic();
if(k != tmp){
tmp = k;
cut[len++] = i;
}
else sres[i][i+N] = 1;
}
for(int i = 0; i < ans - 1; i++)
printf("%d ", cut[i]);
printf("%d\n", cut[ans-1]);
} return 0;
}

ACM/ICPC 之 Dinic+枚举最小割点集(可做模板)(POJ1815)的更多相关文章

  1. hdu 4289 网络流拆点,类似最小割(可做模板)邻接矩阵实现

    Control Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  2. ACM/ICPC 之 Dinic算法(POJ2112)

    Optimal Milking //二分枚举最大距离的最小值+Floyd找到最短路+Dinic算法 //参考图论算法书,并对BFS构建层次网络算法进行改进 //Time:157Ms Memory:65 ...

  3. ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)

    //匈牙利算法-DFS //求最小点覆盖集 == 求最大匹配 //Time:0Ms Memory:208K #include<iostream> #include<cstring&g ...

  4. [C++]最小生成元 (Digit Generator, ACM/ICPC Seoul 2005, UVa1583)

    Question 例题3-5 最小生成元 (Digit Generator, ACM/ICPC Seoul 2005, UVa1583) 如果x+x的各个数字之和得到y,就是说x是y的生成元.给出n( ...

  5. BZOJ 1050 旅行comf(枚举最小边-并查集)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1050 题意:给出一个带权图.求一条s到t的路径使得这条路径上最大最小边的比值最小? 思路 ...

  6. HDU 5889 Barricade 【BFS+最小割 网络流】(2016 ACM/ICPC Asia Regional Qingdao Online)

    Barricade Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  7. (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others)    Memo ...

  8. ACM ICPC Kharagpur Regional 2017

    ACM ICPC Kharagpur Regional 2017 A - Science Fair 题目描述:给定一个有\(n\)个点,\(m\)条无向边的图,其中某两个点记为\(S, T\),另外标 ...

  9. hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...

随机推荐

  1. python基础补漏-02-collection

    collection系列 [1]计数器 Counter import collections res = collections.Counter("34234sdfgs45tsaf1&quo ...

  2. 贝赛尔曲线UIBezierPath(后续)

    使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 . 1:UIBezierPath: UIBezierPath是在 UIKit 中 ...

  3. CentOS 7 配置虚拟主机站点

    1.进入/etc/httpd/conf 下 将httpd.conf 打开. 2.将DocumentRoot注释掉.(将ServerName 打开要不会有错误警告). 3.将虚拟主机站点配置包含进来:I ...

  4. Request —— 让 Node.js http请求变得超简单

    github地址: https://github.com/request/request 安装: npm install request --save-dev

  5. Android Automotive开发之一《编译自己的SDK 》 // TOBEDONE

    自己动手编译最新Android源码及SDK : http://blog.csdn.net/dd864140130/article/details/51718187官方文档,怎样编译sdk : http ...

  6. 修改github.com域名解析

    http://ping.chinaz.com/  首先在这个网站查询 github.com 然后选择ping速度最好的IP地址 将其填充到hosts文件中.win7路径:C:\Windows\Syst ...

  7. JavaScript数据存取的性能问题

    JavaScript中四种基本的数据存取位置: 字面量:只代表自身 字符串.数字.布尔值.对象.函数.数组.正则,以及null和undefined    快 本地变量:var定义的    快 数组元素 ...

  8. tomcat 动态部署

    还可以在conf目录下依次创建Catalina\localhost目录,然后在localhost目录下为 test 这个Web应用程序建立 test.xml 文件,编辑这个文件输入以下内容 从Tomc ...

  9. ThinkPHP框架之验证码

    Think\Verify类可以支持验证码的生成和验证功能. 下面是最简单的方式生成验证码: $Verify = new \Think\Verify(); $Verify->entry(); 上面 ...

  10. 记一次ss故障

    本文主要参考: https://github.com/shadowsocks/shadowsocks shadowssocks 分为客户端和服务器端. 我们平时买的服务,使用是要用的是客户端. 如果你 ...