【网络流】【Dinic】【Next Array】Dinic模板

注意:有时加边不一定要加反向弧。

Next Array版。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<queue>
 5 using namespace std;
 6 #define INF 2147483647
 7 #define MAXN 20011
 8 #define MAXM 600301
 9 int v[MAXM],cap[MAXM],en,first[MAXN],next[MAXM];
10 int d[MAXN],cur[MAXN];
11 queue<int>q;
12 int n,m,S,T;
13 void Init_Dinic(){memset(first,-1,sizeof(first)); en=0;}
14 void AddEdge(const int &U,const int &V,const int &W)
15 {
16     v[en]=V; cap[en]=W;
17     next[en]=first[U]; first[U]=en++;
18     v[en]=U; cap[en]=0;
19     next[en]=first[V]; first[V]=en++;
20 }
21 bool bfs()
22 {
23     memset(d,-1,sizeof(d)); q.push(S); d[S]=0;
24     while(!q.empty())
25       {
26           int U=q.front(); q.pop();
27           for(int i=first[U];i!=-1;i=next[i])
28             if(d[v[i]]==-1 && cap[i])
29               {
30                 d[v[i]]=d[U]+1;
31                 q.push(v[i]);
32               }
33       }
34     return d[T]!=-1;
35 }
36 int dfs(int U,int a)
37 {
38     if(U==T || !a) return a;
39     int Flow=0,f;
40     for(int &i=cur[U];i!=-1;i=next[i])
41       if(d[U]+1==d[v[i]] && (f=dfs(v[i],min(a,cap[i]))))
42         {
43           cap[i]-=f; cap[i^1]+=f;
44           Flow+=f; a-=f; if(!a) break;
45         }
46     if(!Flow) d[U]=-1;
47     return Flow;
48 }
49 int max_flow()
50 {
51     int Flow=0,tmp=0;
52     while(bfs())
53       {
54           memcpy(cur,first,(n+5)*sizeof(int));
55           while(tmp=dfs(S,INF)) Flow+=tmp;
56       }
57     return Flow;
58 }

转载于:https://www.cnblogs.com/autsky-jadek/p/4148722.html

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

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

相关文章

kotlin字符串数组_Kotlin程序读取,遍历,反向和排序字符串数组

kotlin字符串数组Given a string array, we have to read, traverse, reverse and sort its elements. 给定一个字符串数组&#xff0c;我们必须读取&#xff0c;遍历&#xff0c;反转和排序其元素。 Example: 例&#xff1a; Input:arr ["abc", "pqr",…

第 5-3 课:线程池——Executors + 面试题

线程池的创建分为两种方式:ThreadPoolExecutor 和 Executors,上一节学习了 ThreadPoolExecutor 的使用方式,本节重点来看 Executors 是如何创建线程池的。Executors 可以创建以下六种线程池。 FixedThreadPool(n):创建一个数量固定的线程池,超出的任务会在队列中等待空闲的…

液晶显示温度(DS18B20)

DS18B20测温范围-55——125度&#xff0c;在-10——85度之间精度为0.5度&#xff0c;其测温精度还是较高的&#xff0c;DS18B20常见封装为3个引脚&#xff0c;VCC(电源正)&#xff0c;DQ(信号线)&#xff0c;GND(电源负)&#xff0c;如图&#xff1a; DS18B20相关指令&#xf…

英语字根252

英语字根1,agdo,act 做&#xff0c;动2,agrifield 田地&#xff0c;农田(agri也做agro,agr)3,annyear年4,audihear听5,bellwar战争6,brevshort短7,ced,ceed,cessgo行走8,cepttake拿取9,cid,ciscut,kill切&#xff0c;杀10,circring环&#xff0c;圈11,claim,clamcry,shout喊叫1…

第 5-6 课:Java 并发包中的高级同步工具 + 面试题

Java 中的并发包指的是 java.util.concurrent(简称 JUC)包和其子包下的类和接口,它为 Java 的并发提供了各种功能支持,比如: 提供了线程池的创建类 ThreadPoolExecutor、Executors 等;提供了各种锁,如 Lock、ReentrantLock 等;提供了各种线程安全的数据结构,如 Concur…

python日历模块_Python日历模块| setfirstweekday()方法与示例

python日历模块Python calendar.setfirstweekday()方法 (Python calendar.setfirstweekday() Method) setfirstweekday() method is an inbuilt method of the calendar module in Python. It works on simple text calendars and sets the first weekday from when the week s…

51单片机汇编指令

注: Rn与Ri中n0 ~ 7,i0 ~ 1&#xff0c;另外Cy是进位位&#xff0c;同时也是状态位&#xff0c;标志位 数据传送类指令 内部数据传送指令 助记符作用寻址方式机器周期字节数MOV A,Rn将Rn的内容传送给A寄存器11MOV A,directdirect是一个地址单元&#xff0c;将该地址的内容传…

JavaScript:世界上误解最深的语言

JavaScript:The Worlds Most Misunderstood Programming LanguageJavaScript&#xff1a;世界上误解最深的语言Douglas Crockfordwww.crockford.com翻译&#xff1a;袁晓辉&#xff08;http://blog.csdn.net/uoyevoli/&#xff09;JavaScript, aka Mocha, aka LiveScript, aka …

第 5-5 课:线程安全——synchronized 和 ReentrantLock + 面试题

前面我们介绍了很多关于多线程的内容,在多线程中有一个很重要的课题需要我们攻克,那就是线程安全问题。线程安全问题指的是在多线程中,各线程之间因为同时操作所产生的数据污染或其他非预期的程序运行结果。 线程安全 1)非线程安全事例 比如 A 和 B 同时给 C 转账的问题…

MFC中的几个常用类——CFileDialog

2019独角兽企业重金招聘Python工程师标准>>> 1 简介 CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。 可以用 构造函数提供的方式使用CFileDialog&#xff0c;也可以从CFileDi…

数组中的filter方法_数组filter()方法以及JavaScript中的示例

数组中的filter方法JavaScript filter()方法 (JavaScript filter() method) filter() method is used to returns an array with the values which pass the given test (condition). filter()方法用于返回具有通过给定测试(条件)的值的数组。 Syntax: 句法&#xff1a; arra…

Oracle内置角色connect与resource的权限

首先用一个命令赋予user用户connect角色和resource角色&#xff1a; grant connect,resource to user; 运行成功后用户包括的权限: CONNECT角色&#xff1a; --是授予最终用户的典型权利&#xff0c;最基本的 ALTER SESSION --修改会话 CREATE CLUSTER --建立聚簇 CREATE DATAB…

第 5-7 课:Java 中的各种锁和 CAS + 面试题

如果说快速理解多线程有什么捷径的话,那本文介绍的各种锁无疑是其中之一,它不但为我们开发多线程程序提供理论支持,还是面试中经常被问到的核心面试题之一。因此下面就让我们一起深入地学习一下这些锁吧。 乐观锁和悲观锁 悲观锁和乐观锁并不是某个具体的“锁”而是一种并…

Exchange Server2010部署完后的配置:CA、Outlook Anywhere、OWA域名简写

Exchange Server 2010邮件系统安装完成后&#xff0c;必须经过相应的配置后&#xff0c;才能使Exchange Server 2010邮件系统提供基本的访问、邮件收发等基本功能。下面我们逐一看看如何让Exchanger Server跑起来。Exchange Server2010产品授权&#xff1a;我们目前所安装的Exc…

STM32——PID恒温控制

原理 元件 stm32f103核心板、L298N模块(当然用MOS管更好)、led一个、NPN三极管一个、蜂鸣器一个、DHT11一个、LCD1602一个、电阻200欧两个、可调电阻10K一个、加热丝一个 功能描述 用DHT11检测当前环境温湿度&#xff0c;并将数据显示在LCD1602上&#xff0c;在用设定温度与当…

第 6-2 课:SpringMVC 核心 + 面试题

Spring MVC 介绍 Spring MVC(Spring Web MVC)是 Spring Framework 提供的 Web 组件,它的实现基于 MVC 的设计模式:Controller(控制层)、Model(模型层)、View(视图层),提供了前端路由映射、视图解析等功能,让 Java Web 开发变得更加简单,也属于 Java 开发中必须要…

Python | 查找字符串中每个字符的频率

Given a string and we have to find the frequency of each character of the string in Python. 给定一个字符串&#xff0c;我们必须在Python中查找该字符串的每个字符的频率。 Example: 例&#xff1a; Input: "hello"Output:{o: 1, h: 1, e: 1, l: 2}Python c…

Lync2013 升级错误总结8 Lync2013 日志总是提示进程 RtcHost(5724) 收到了一个无效的客户端证书...

错误提示&#xff1a;解决方法&#xff1a;1打开注册表引导到&#xff1a;HKLM\System\CurrentControlSet\Control\SecurityProviders\Schannel2 新建一个DWORD键值&#xff1a;值的名称&#xff1a;EnableSessionTicket3 右键这个值点编辑讲数值数据修改成&#xff1a;24 重新…

简易的遍历文件加密解密

功能描述 将生成的可执行程序放在指定的文件夹内&#xff0c;双击后将该目录下所有文件包括子文件夹内文件全部加密&#xff0c;再次双击运行后将进行解密。 加密解密实现 主要运用了异或与取反操作&#xff0c;异或&#xff1a;两个值不同为1&#xff0c;相同为0。取反就是将该…

oracle 查看用户、权限、角色

查看用户、权限、角色的命令和视图1.查看所有用户&#xff1a; select * from dba_users; select * from all_users; select * from user_users; 2.查看用户系统权限&#xff1a; select * from dba_sys_privs; select * from session_privs; select * from user_sys_privs; 3.…