
二分图
二分图匈牙利
谁是凶手1703
这个作者很懒,什么都没留下…
展开
-
二分图的多重匹配问题【园桌问题】【同一公司的人在不同桌子上】【源点限制公司人数】【汇点限制桌位数】
二分图的多重匹配问题题目:圆桌问题有一些公司,每个公司有一些员工,还有一些圆桌,每个公司里面的员工分配到不同的园桌,每个圆桌有位置上限。建图每个公司里面的人分配到不同的桌子,求最大匹配数,抽象为二分图的多重匹配问题。每个公司抽象出点,然后在每个桌子上连边,意味着:这个公司向这个桌子分配一个人。每个公司有人数限制:流网络里面流入这个点的流量为这个人数每个桌子有座位限制:流网络流出这个座位的流量有限制建立源点:源点到每个公司的流量为这个公司的人数建立汇点:每个桌子到汇点的流量为这个桌子的座位数原创 2020-12-03 13:08:35 · 264 阅读 · 0 评论 -
网络流【二分图建图】【输出匹配=边是不是满的】
网络流-二分图求二分图的最大匹配,建图,网络流:源点、汇点。求最大匹配,就是求这个流网络的整数值最大流,使用Dinic求整数值最大流 (算法导论)输出匹配的话:考虑这个边是不是满的就可以了首先这个边是正向边然后枚举正向边,e[i] 的编号属于右边的集合然后,找到e[i]的前面的点,就是e[i^1]代码#include <iostream>#include <cstring>#include <algorithm>using namespace原创 2020-12-03 11:28:49 · 200 阅读 · 0 评论 -
估计人数【最小路径重复点覆盖】【直接在(i,j)建一个新点】
估计人数题意思路用最少的人,走完这几条线。最小重复路径点覆盖问题建图之后,跑一下二分图。考虑建图:图中‘1’连着完下、或者右走。我们把图中所有的1编号,然后建图,然后floly,然后匈牙利。代码#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>#includ原创 2020-10-15 20:28:07 · 586 阅读 · 1 评论 -
The Maximum Unreachable Node Set【ACM-ICPC 2017 Asia Nanning】
The Maximum Unreachable Node Set题意有向无环图中,求最多能选出多少个点集合:任意俩点,都互不联通。求一个:最少路径重复点覆盖问题。每一条路径是一个点集合。其最少路径数=点数-最大匹配数代码#include<bits/stdc++.h>using namespace std;const int N=500;int match[N];int st[N];int g[N][N];int n,m;void floyd(){ for (in原创 2020-10-02 17:43:56 · 145 阅读 · 0 评论 -
二分图总结【acwing算法提高课】
性质一个图是二分图,图中不存在奇数环,染色法关押罪犯最优解越大,图中右半部分越是二分图染色法求二分图,这些图不一定联通!!没有必要每次cheak都建图,在染色中增加判断权重就好了代码#include<bits/stdc++.h>using namespace std;const int N=1e6+100;int h[N],ne[N],e[N],w[N],idx,rh[N];void add(int a,int b,int c){ e[idx]=b;原创 2020-08-25 17:37:05 · 542 阅读 · 0 评论 -
二分图、最小路径重复点覆盖的一些性质
二分图的一些性质:二分图==染色法不矛盾 == 不存在奇数环二分图上的最小点覆盖 == 最大匹配数(每条边至少选一点)二分图上最大独立集=总点数-最大匹配数二分图上的最小互不相交路径点覆盖=点数-最大匹配数二分图上的最小路径重复点覆盖=先在原图上传递闭包+二分图上的最小互不相交路径点覆盖...原创 2020-02-10 23:27:23 · 364 阅读 · 0 评论 -
匈牙利算法【二分图的最大匹配】
https://www.acwing.com/problem/content/description/863/#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int h[N],e[N*2],ne[N*2],idx;int match[N];bool vis[N];void add(int a,i...原创 2019-08-22 15:52:35 · 130 阅读 · 0 评论 -
染色法判断二分图
#include<bits/stdc++.h>using namespace std;int n,m;const int N=1e5+10;int h[N],e[N*2],ne[N*2],idx;int color[N];void add(int a,int b){ e[idx]=b; ne[idx]=h[a]; h[a]=idx++;}boo...原创 2019-08-22 15:51:04 · 203 阅读 · 0 评论 -
二分图的最大匹配【匈牙利算法】
https://www.acwing.com/problem/content/description/863/题意:给定一个二分图,其中左半部包含n1个点(编号1~n1),右半部包含n2个点(编号1~n2),二分图共包含m条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。匈牙利算法 ::男女配对,最大红线数枚举每个男生,如果找到匹配,res++...原创 2019-08-15 16:21:36 · 160 阅读 · 0 评论