luogu P3386 【模板】二分图匹配
二次联通门 : luogu P3386 【模板】二分图匹配
/*
luogu P3386 【模板】二分图匹配 最大流
设置源点,汇点,连到每条边上
跑一边最大流即可
*/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue> #define Max 100008
#define INF 1e7 using namespace std; inline int min (int a, int b)
{
return a < b ? a : b;
} void read (int &now)
{
now = ;
char word = getchar ();
while (word > '' || word < '')
word = getchar ();
while (word >= '' && word <= '')
{
now = now * + word - '';
word = getchar ();
}
} struct Edge
{
int from;
int to;
int flow;
int next;
}edge[Max << ]; int deep[Max];
int Edge_Count;
int edge_list[Max];
int S, T; inline void AddEdge (int from, int to, int dis)
{
Edge_Count++;
edge[Edge_Count].to = to;
edge[Edge_Count].flow = dis;
edge[Edge_Count].next = edge_list[from];
edge_list[from] = Edge_Count;
} int Get_Flow (int now, int flow)
{
if (now == T || flow <= )
return flow;
int res = , pos;
for (int i = edge_list[now]; i; i = edge[i].next)
{
if (deep[edge[i].to] != deep[now] + || edge[i].flow <= )
continue;
pos = Get_Flow (edge[i].to, min (edge[i].flow, flow));
edge[i].flow -= pos;
edge[i ^ ].flow += pos;
res += pos;
flow -= pos;
if (flow <= )
return res;
}
return res;
} int E, N, M;
int Answer; void Bfs ()
{
while (true)
{
bool flag = false;
memset (deep, -, sizeof deep);
queue <int> Queue;
Queue.push (S);
deep[S] = ;
int now;
while (!Queue.empty ())
{
now = Queue.front ();
Queue.pop ();
for (int i = edge_list[now]; i; i = edge[i].next)
if (deep[edge[i].to] < && edge[i].flow)
{
deep[edge[i].to] = deep[now] + ;
if (edge[i].to == T)
{
flag = true;
break;
}
Queue.push (edge[i].to);
}
if (flag)
break;
}
if (deep[T] <= )
break;
Answer += Get_Flow (S, INF);
}
} int main (int argc, char *argv[])
{
read (N);
read (M);
read (E);
S = Max - ;
T = Max - ;
int x, y;
for (int i = ; i <= E; i++)
{
read (x);
read (y);
if (x > M || y > M)
continue;
AddEdge (x, N + y + , );
AddEdge (N + y + , x, );
}
for (int i = ; i <= N; i++)
{
AddEdge (S, i, );
AddEdge (i, S, );
}
for (int i = ; i <= M; i++)
{
AddEdge (N + i + , T, );
AddEdge (T, N + i + , );
}
Bfs ();
printf ("%d", Answer);
return ;
}
luogu P3386 【模板】二分图匹配的更多相关文章
- [洛谷P3386] [模板] 二分图匹配 (匈牙利算法)
题目传送门 毒瘤出题人zzk出了个二分图匹配的题(18.10.04模拟赛T2),逼我来学二分图匹配. 网络流什么的llx讲完之后有点懵,还是匈牙利比较好理解(绿与被绿). 对于左边的点一个一个匹配,记 ...
- 【洛谷 p3386】模板-二分图匹配(图论)
题目:给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数. 解法:匈牙利算法.(以前我总是不记得......)实质上应该有贪心的思想,每次都尽量匹配,找到能和自己匹配的也尽量让它们匹配 ...
- 模板——二分图匹配KM
具体方法就不介绍了,详见 https://blog.csdn.net/sixdaycoder/article/details/47720471 主要讲一些注意点: 1:不直接将未匹配的y减小是因为要保 ...
- P3386 【模板】二分图匹配(匈牙利&最大流)
P3386 [模板]二分图匹配 题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正 ...
- 洛谷—— P3386 【模板】二分图匹配
P3386 [模板]二分图匹配(复习) 题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每 ...
- P3386 【模板】二分图匹配
题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正整数u,v,表示u,v有一条连边 ...
- AC日记——【模板】二分图匹配 洛谷 P3386
题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正整数u,v,表示u,v有一条连边 ...
- Dinic二分图匹配 || Luogu P3386
题面:[模板]二分图匹配 思路:Dinic实现二分图匹配,要建一个超级源点(S)和超级汇点(T),分别定为N+M+1和N+M+2 然后S去和N中的数建正边和反边,正边权值为1,反边权值为0:M中的数去 ...
- 洛谷 P3386 【模板】二分图匹配
题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正整数u,v,表示u,v有一条连边 ...
随机推荐
- Docker从入门到掉坑(五):继续挖一挖 k8s
在之前的几篇文章中,主要还是讲解了关于简单的docker容器该如何进行管理和操作及k8s上手避坑,在接下来的这篇文章开始,我们将继续对k8s模块的学习 pod是啥 在k8s里面,有很多新的技术概念,其 ...
- NIO堆外内存与零拷贝
重点: 1.0拷贝需要系统支持. 普通内存模型: java线程内存 --> 操作系统内存 --> 硬盘 直接内存模型: java --> 操作系统内存 --> 硬盘 两者对比, ...
- vue 写一个炫酷的轮播图
效果如上图: 原理: 1.利用css 的 transform 和一些其他的属性,先选五张将图片位置拍列好,剩余的隐藏 2.利用 js 动态切换类名,达到切换效果 css代码如下 .swiper-cer ...
- @objc
Swift 和 Objective-C 的互调这个话题很大,今天我们重点看看其中一个小的知识点:@objc的使用. 用法 在 Swift 代码中,使用@objc修饰后的类型,可以直接供 Objecti ...
- Web - 前端 Vue.js (1)
Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使 ...
- 【转载】Sqlserver限制最大可使用内存
在Sqlserver的使用过程中,我们会发现随着运行时间的增长,Sqlserver占用的系统也越来越大,查了网上的相关资料说,Sqlserver在查询完相应数据后,为了下一次查询的性能,并不会马上释放 ...
- JSONObject和URL以及HttpURLConnection的使用
1 将java对象类转成json格式 首先引入依赖jar文件 注意依赖文件的版本号,高版本可能没有对应的类 2 我的实体类中包含内部类注意内部类要public才能被序列化成json格式 import ...
- dao 接口定义了一个方法,报错 The method xxx is undefined for the type xxx;
转自:https://blog.csdn.net/panshoujia/article/details/78203837 持久层(DAO层)下的一个接口 ,eclipse报了一个The method ...
- 关于INT_MIN
来自为知笔记(Wiz)
- sql 四舍五入 保留两位小数
一.问题描述 数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 二.sqlserver解决方案: 1. 使用 Round() 函 ...