首页 > 其他分享 >网络流模板--zhengjun

网络流模板--zhengjun

时间:2023-10-09 16:26:09浏览次数:39  
标签:head const -- ll zhengjun int edge kk 模板

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e5+10,M=2e5+10,Inf=1e9;
namespace Flow{
	const ll INF=1e18;
	const int V=N,E=M*2+N*2*2;
	int s,t,kk,head[V],cur[V],vis[V];
	ll d[V];
	struct edges{
		int to,c,w,nex;
	}edge[E];
	void init(int x,int y){
		s=x,t=y,kk=1;
		fill(head+s,head+1+t,0);
	}
	void add(int u,int v,int c,int w){
		edge[++kk]={v,c,w,head[u]},head[u]=kk;
		edge[++kk]={u,0,-w,head[v]},head[v]=kk;
	}
	bool bfs(){
		queue<int>q;
		copy(head+s,head+1+t,cur+s);
		fill(d+s,d+1+t,INF),d[s]=0;
		q.push(s);
		for(int u;!q.empty();){
			u=q.front(),q.pop();
			for(int i=head[u];i;i=edge[i].nex){
				int v=edge[i].to,c=edge[i].c,w=edge[i].w;
				if(c&&d[v]>d[u]+w){
					d[v]=d[u]+w,q.push(v);
				}
			}
		}
		return d[t]<INF;
	}
	ll sum;
	int dfs(int u,int lim=Inf){
		if(u==t)return lim;
		vis[u]=1;
		int flow=0;
		for(int i=cur[u];i&&flow<lim;i=edge[i].nex){
			cur[u]=i;
			int v=edge[i].to,c=edge[i].c;
			if(!c||d[v]!=d[u]+edge[i].w||vis[v])continue;
			int f=dfs(v,min(lim-flow,edge[i].c));
			if(!f)d[v]=INF;
			edge[i].c-=f,edge[i^1].c+=f,flow+=f;
			sum+=1ll*f*edge[i].w;
		}
		vis[u]=0;
		return flow;
	}
	int dinic(){
		int flow=0;
		for(;bfs();)flow+=dfs(s);
		return flow;
	}
}
int main(){
	return 0;
}

标签:head,const,--,ll,zhengjun,int,edge,kk,模板
From: https://www.cnblogs.com/A-zjzj/p/17752018.html

相关文章

  • Mysql高级sql语句
    1.高级sql语句(进阶查询一)1.1select语法:SELECT"字段"FROM"表名";示例:selectnamefromhome;selectidfromhome2;1.2distinct语法:SELECTDISTINCT"字段"FROM"表名";SELECTDISTINCTStore_NameFROMStore_Info;1.3where有条件......
  • 提升测试能力的有效培训策略指南
    进行测试培训的目的是提高测试团队的知识面和技能,以达到改进测试质量和效率的目标。为此,企业需要设计和实施系统有效的测试培训计划。确定培训目的与需求分析测试管理人员应当根据团队现状和知识结构,分析出当前最需要加强的知识或技能,作为培训的重点。具体来说,可以从以下几个方......
  • 基础数据结构
    链表#链节点classNode:def__init__(self,item=0,next=None):self.item=itemself.next=next#链表classLinkedList:def__init__(self):self.head=Nonedefcreate(self,data):self.head=Node(data[0])......
  • Application Cache HTML
    主要是加速离线存储,Web开发者可借助微信提供的资源存储能力,直接从地加载Web资源而不需要再从服务端拉取,从而减少网页加载时间,为微信用户提供更优质的网页浏览体验使用方式example.appcacheCACHEMANIFEST#版本号或注释CACHE:index.htmlstyles.cssapp.jsNETWO......
  • 自我介绍
    我是黄熠俊,祖籍浙江温州,没啥兴趣爱好(看美图算吗)。目前在学习软件技术及应用,擅长抱大腿,端茶送水。我对软件技术及应用十分感兴趣,但我认为我仍缺少编程技能。我唯一的能力是好沟通,我希望在课程中学习到有关软件技术及应用的知识,在实践中能起到幕后人员的作用。......
  • httpclient上传图片(multipart/form-data)
    stringboundary=string.Format("----WebKitFormBoundary{0}",DateTime.Now.Ticks.ToString("x"));MultipartFormDataContentcontent=newMultipartFormDataContent(boundary);content.Headers.ContentType=Me......
  • 关键组件
    Tamagui提供各种本机和Web组件,例如按钮、开关、堆栈、输入、工作表等。然而,它提供的不仅仅是一个漂亮的组件库,它还有自己的编译器,可以扁平化您的组件树并修改您的样式以最适合您的应用程序运行的任何平台。可以在Expo和Next.js应用程序中使用,允许您在本机应用程序和Web......
  • client-go实战之六:时隔两年,刷新版本继续实战
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos时隔两年,《client-go实战》被激活,更多内容将会继续更新时间过得真快,《client-go实战》系列已是两年前的作品,近期工作中再次用到client-go时,突然发现自己原创的内容远达不......
  • VTable——不只是高性能的多维数据分析表格
    导读VTable:不只是高性能的多维数据分析表格,更是行列间创作的方格艺术家!VTable是字节跳动开源可视化解决方案VisActor的组件之一。在现代应用程序中,表格组件是不可或缺的一部分,它们能够快速展示大量数据,并提供良好的可视化效果和交互体验。VTable是一款基于可视化渲染引擎......
  • python如何配置文件路径
    1、获取被调用函数所在的模块文件名,然后获取其路径。2、与配置文件所在的路径进行比较,基于模块文件路径和父级路径的配置文件所在的相对路径,获得配置文件的绝对路径。co_filepath=sys._getframe().f_code.co_filenamehead,tail=os.path.split(co_filepath)conf_filepa......