ZOJ-2587 Unique Attack 最小割的唯一性判定

题意:给定一个无向图,要求判定分离两个点的最小割是否唯一。

解法:在求出最大流的基础上,从源点进行一次搜索,搜索按照未饱和的边进行,得到顶点子集S的顶点个数;再从汇点反向搜索未饱和的边,得到子集T的顶点个数,判定顶点数相加是否等于总共的顶点数。

http://blog.csdn.net/waitfor_/article/details/7330437的文章写的很好,这里截取文中所画的两个图进行说明。

(1)正向搜索集合为S,反向搜索集合为T,cnt1和cnt2都是最小割边。很显然M还存在着最小割边,因为从M到T的残余网络也没有流向T的容量了。

(2)增加E1这部分边的容量将直接导致网络最大流量增加。增加E2和E3则不然。同样M中存在并上E1后为割边的边集。

(3)两条割边完全重合为一条,此时网络中的割边唯一。

 

代码如下:

View Code
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;const int SS = 805, TT = 806;
const int INF = 0x3fffffff;
int N, M, A, B;struct Edge {int v, c, next;    
};
Edge e[30000];
int idx, head[810], lv[810];
int front, tail, que[810];
int vis[810];void insert(int a, int b, int c) {e[idx].v = b, e[idx].c = c;e[idx].next = head[a];head[a] = idx++;
}bool bfs() {memset(lv, 0xff, sizeof (lv));front = tail = lv[SS] = 0;que[tail++] = SS;while (front < tail) {int u = que[front++];for (int i = head[u]; i != -1; i = e[i].next) {int v = e[i].v;if (!(~lv[v]) && e[i].c) {lv[v] = lv[u] + 1;if (v == TT) return true;que[tail++] = v;    }}}return false;
}int dfs(int u, int sup) {if (u == TT) return sup;int tf = 0, f;for (int i = head[u]; i != -1; i = e[i].next) {int v = e[i].v;if (lv[u]+1==lv[v] && e[i].c && (f=dfs(v, min(e[i].c, sup-tf)))) {tf += f;e[i].c -= f, e[i^1].c += f;if (tf == sup) return sup;    }}if (!tf) lv[u] = -1;return tf;
}void dinic() {int ret = 0;while (bfs()) {ret += dfs(SS, INF);    }
//    printf("ret = %d\n", ret); 
}void flood(int u, int &cnt) {for (int i = head[u]; i != -1; i = e[i].next) {if (e[i].c && !vis[e[i].v])    {++cnt;vis[e[i].v] = 1;flood(e[i].v, cnt);}}
}void flood_r(int u, int &cnt) {for (int i = head[u]; i != -1; i = e[i].next) {if (e[i^1].c && !vis[e[i].v])    {++cnt;vis[e[i].v] = 1;flood_r(e[i].v, cnt);}}
}bool query() {int cnta = 0, cntb = 0; // 分别为从两个方向进行搜索而计数memset(vis, 0, sizeof (vis));vis[SS] = vis[TT] = 1;flood(SS, cnta);memset(vis, 0, sizeof (vis));vis[SS] = vis[TT] = 1;flood_r(TT, cntb);return cnta + cntb == N;
}int main() {while (scanf("%d %d %d %d", &N, &M, &A, &B), N|M|A|B) {int a, b, c;idx = 0;memset(head, 0xff, sizeof (head));insert(SS, A, INF), insert(A, SS, 0);insert(B, TT, INF), insert(TT, B, 0);for (int i = 0; i < M; ++i) {scanf("%d %d %d", &a, &b, &c);insert(a, b, c), insert(b, a, c);}dinic();printf(query() ? "UNIQUE\n" : "AMBIGUOUS\n");}return 0;        
}

 

转载于:https://www.cnblogs.com/Lyush/archive/2013/05/01/3053640.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#define va_arg(AP, TYPE)

Linux内核 stdarg.h 中&#xff1a; #define va_arg(AP, TYPE) / (AP __va_rounded_size (TYPE), / *((TYPE *) (AP - __va_rounded_size (TYPE)))) 为&#xff0c;AP 指针先向前移动&#xff08;sizeof&#xff08;Type&#xff09;&#xff09;位&#xff0c; 再获取前指针点…

新手学html 第一节:html简介

什么是 HTML&#xff1f; HTML&#xff08;Hypertext Markup Language&#xff09;文本标记语言&#xff0c;是用于描述网页文档的一种标记语言. HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language) .HTML 不是一种编程语言&#xff0c;…

dubbo与springmvc的简单使用

什么是Dubbo&#xff1f; dubbo是阿里巴巴公司开源的高性能优秀服务框架&#xff0c;通过高性能的RPC&#xff08;远程服务调用&#xff09;实现服务的输入输出功能&#xff0c;可以与spring框架无缝整合&#xff1b; 传统的架构所有的模块都在一台服务器上&#xff0c;单台服务…

怎么用VC编程实现把用户名,密码提交到网页上并且实现登录?

网址&#xff1a;http://topic.csdn.net/u/20100526/11/d8ce2c65-a151-44d0-ae57-3847a1f01cfd.html 相关链接&#xff1a;VC POST表单——登录验证新浪邮箱VC提交网页表单&#xff0d;自动评论留言

一个计算机硕士毕业生的求职经验(二)

二、 前期准备 前期准备主要包括两个方面&#xff1a;实习和简历。一般10月份开始找的话&#xff0c;最好1、2月份准备&#xff0c;也就是说提前半年&#xff0c;我是4月份开始作的准备。当时准备的主要内容就是&#xff1a;确定自己的求职目标&#xff0c;写好简历&#x…

Mina学习之搭建项目工程目录

为什么80%的码农都做不了架构师&#xff1f;>>> Mina核心分层分为&#xff1a;IoService,IoFilter和IoHandler 搭建项目工程目录&#xff0c;一般应用都包含如下几个部分&#xff1a; 1、server\client 创建mina连接&#xff0c;TCP/IP请求响应模式 …

测试自动化学习7

python读取Excel import xlrdbook xlrd.open_workbook(my_user-bak.xls) sheet book.sheet_by_index(0) print(sheet.row_values(0)) # 某一行数据 print(sheet.col_values(0)) # 某一列数据 print(sheet.cell(0,0).value) # 某个单元格的数据 print(sheet.cell(1,2).valu…

The credentials you provided during SQL Server 2008 install are invalid

在安装sql server的时候遇到了这个问题&#xff0c; - The credentials you provided for the SQL Server Agent service are invalid. To continue, provide a valid account and password for the SQL Server Agent service.- The specified credentials for the SQL Server …

2010全面兼容IE6/IE7/IE8/FF的CSS HACK写法

这个帖子总结的很好。http://www.aa25.cn/web_w3c/868.shtml转载于:https://www.cnblogs.com/dqg0312/archive/2011/08/03/2126050.html

jsp 连接MS server 数据库的例子

先要把JBCD引擎加到工程里面来&#xff01; <% page import"java.lang.*, java.io.*, java.sql.*, java.util.*" contentType"text/html;charsetgb2312" %> <html> <body> <% Class.forName("com.microsoft.sqlserver.jdbc.SQLS…

HttpClient中转上传文件

原文&#xff1a;https://www.cnblogs.com/lyxy/p/5629151.html 场景&#xff1a;客户端(浏览器)A---->选择文件上传---->服务器B---->中转文件---->服务器C---->返回结果---->服务器B---->客户端A 有时候在项目中需要把上传的文件中转到第三方服务器&…

sublime text 2快捷键总结

为什么80%的码农都做不了架构师&#xff1f;>>> 以mac系统为例 一&#xff1a;编辑&#xff08;我们使用一个编辑器最频繁的事情就是编辑了。&#xff09; &#xff08;1&#xff09;基本操作&#xff1a; 【1】CommandA:全选 【2】CommandC:复制 【3】Comman…

Unix环境高级编程学习笔记(五)

第七章 进程环境1、main函数&#xff1a;int main(int argc, char *argv[]) 2、进程中止&#xff1a;正常中止&#xff1a;(1)从main返回;(2)调用exit;(3)调用_exit或_Exit;(4)最后一个线程从启动例程返回;(5)最后一个线程调用pthread_exit; 异常中止&#xff1a;(6)调用abort;…

Spring Boot 2.1.5 正式发布,1.5.x 即将结束使命!

Spring Boot 官网在 2019/03/15 这天发布了 Spring Boot 2.1.5 正式版&#xff0c;栈长表示真跟不上了。。 官宣如下 &#xff1a; https://spring.io/blog/2019/05/15/spring-boot-2-1-5-released 仓库也已经跟上&#xff1a; 那这个版本有什么新功能&#xff1f; 1、增加了 S…

linux上安装telnet服务器:linux vmvare虚拟机 安装telnet redhat9

linux上安装telnet服务器:linux vmvare虚拟机 安装telnet redhat9 参考&#xff1a;http://blog.sina.com.cn/s/blog_5688414b0100bhr9.html ------------------------------------------------------------------------------------------- 1、检测 安装之前先检测是否这些软件…

Console-算法[for,if]-有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数...

ylbtech-Arithmetic:Console-算法[for,if]-有5个人坐在一起&#xff0c;问第五个人多少岁&#xff1f;他说比第4个人大2岁。问第4个人岁数1.A&#xff0c;Demo(案例)【程序28】 题目&#xff1a;有5个人坐在一起&#xff0c;问第五个人多少岁&#xff1f;他说比第4个人大2岁。问…

gunicorn 几种 worker class 性能测试比较

Gunicorn, 一个支持WSGI协议的web服务器 Flask, 一个轻量级的python web框架 Gunicorn目前自带支持几种工作方式:sync (默认值) eventlet gevent tornado 测试环境准备 python 2.7 redis-server 2.8.4 压力测试工具ab 代码及相关python包准备 创建虚一个新的虚拟环境并安装需要…

《孙子兵法》【作战第二】

原文&#xff1a;&#xff11;.孙子曰&#xff1a;凡用兵之法&#xff0c;驰车千驷&#xff0c;革车千乘&#xff0c;带甲十万&#xff0c;千里馈粮&#xff0c;则内外之费&#xff0c;宾客之用&#xff0c;胶漆之材&#xff0c;车甲之奉&#xff0c;日费千金&#xff0c;然后十…

linux下ftp服务器的搭建

http://www.cublog.cn/u3/93926/showart_1874130.htmlRHEL4中ftp服务器的搭建首先修改配置文件使主机获得永久ip地址# vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICEeth0BOOTPROTOstaticIPADDR172.16.16.111NETMASK255.255.0.0GATEWAY172.16.16.1ONBOOTyesTYPEEthernet重…

原来MySQl就是这样工作的

一、MySQL简单介绍MySQL是当今最流行的开源数据库管理系统&#xff0c;超过10亿的下载量足可以证明这点。MySQL以其速度、高可靠性、简单易用&#xff0c;广泛应用,一些大型企业也在逐渐应用&#xff0c;如&#xff1a;Facebook、维基百科等网站。MySQL最早由瑞典的MySQL AB公司…