博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dinic二分图匹配 || Luogu P3386
阅读量:5261 次
发布时间:2019-06-14

本文共 1846 字,大约阅读时间需要 6 分钟。

题面:

思路:Dinic实现二分图匹配,要建一个超级源点(S)和超级汇点(T),分别定为N+M+1和N+M+2

然后S去和N中的数建正边和反边,正边权值为1,反边权值为0;M中的数去与T建正边和反边,正边权值为1。

N、M之间的数建图一样。

然后就去跑最大流。

注意:在Dinic函数中每次更新Cur的值时,要把S和T的Cur也更新了。

代码:

1 #include
2 #include
3 #include
4 #define min(a,b) ((a)<(b)?(a):(b)) 5 using namespace std; 6 const int maxn=1050,maxm=maxn,maxe=maxm*maxn; 7 int N,M,u,v,E,num_edge=-1,edge_head[maxn+maxm],Q[maxn+maxm],f1,f2,Dep[maxn+maxm]; 8 int S,T,Cur[maxn+maxm]; 9 struct Edge{
int to,nx,dis;}edge[maxe];10 inline void Add_edge(int from,int to,int dis){11 edge[++num_edge].nx=edge_head[from];12 edge[num_edge].to=to;13 edge[num_edge].dis=dis;14 edge_head[from]=num_edge;15 return;16 }17 inline bool Bfs(){18 memset(Dep,0,sizeof(Dep));19 f1=f2=1;20 Dep[S]=1;21 Q[f2++]=S;22 while(f1
0){42 edge[i].dis-=p;43 edge[i^1].dis+=p;44 return p;45 }46 }47 }48 return 0;49 }50 inline int Dinic(){51 int ans=0;52 while(Bfs()){53 int toi=N+M+2;54 for(int i=1;i<=toi;i++)Cur[i]=edge_head[i];55 while(int k=Dfs(S,1<<30))ans+=k;56 }57 return ans;58 }59 int main(){60 memset(edge_head,-1,sizeof(edge_head));61 scanf("%d%d%d",&N,&M,&E);62 S=N+M+1;T=N+M+2;63 for(int i=1;i<=N;i++){64 Add_edge(S,i,1);65 Add_edge(i,S,0);66 }67 int toi=N+M;68 for(int i=N+1;i<=toi;i++){69 Add_edge(i,T,1);70 Add_edge(T,i,0);71 }72 for(int i=1;i<=E;i++){73 scanf("%d%d",&u,&v);74 if(v>M||u>N)continue;75 v+=N;76 Add_edge(u,v,1);77 Add_edge(v,u,0);78 }79 printf("%d\n",Dinic());80 return 0;81 }

By:AlenaNuna

转载于:https://www.cnblogs.com/AlenaNuna/p/10959317.html

你可能感兴趣的文章
tcpcopy 流量复制工具
查看>>
vue和react的区别
查看>>
第十一次作业
查看>>
负载均衡策略
查看>>
微信智能开放平台
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>
Oracle--通配符、Escape转义字符、模糊查询语句
查看>>
子网划分讲解及练习(一)
查看>>
c# 文件笔记
查看>>
第一页 - 工具的使用(webstorm)
查看>>
Linux 进程资源用量监控和按用户设置进程限制
查看>>
IE浏览器整页截屏程序(二)
查看>>
D3.js 之 d3-shap 简介(转)
查看>>
制作满天星空
查看>>
类和结构
查看>>
CSS3选择器(二)之属性选择器
查看>>
adidas crazylight 2018 performance analysis review
查看>>
typeset shell 用法
查看>>
python 之 循环语句
查看>>
心得25--JDK新特性9-泛型1-加深介绍
查看>>