HDU1150 二分匹配 最少点覆盖=最大匹配数
来源:互联网 发布:中国进出口额数据 编辑:程序博客网 时间:2024/06/07 03:12
3个重要结论:
最小点覆盖数: 最小覆盖要求用最少的点(X集合或Y集合的都行)让每条边都至少和其中一个点关联。可以证明:最少的点(即覆盖数)=最大匹配数
最小路径覆盖=最小路径覆盖=|N|-最大匹配数
用尽量少的不相交简单路径覆盖有向无环图G的所有结点。解决此类问题可以建立一个二分图模型。把所有顶点i拆成两个:X结点集中的i和Y结点集中的i',如果有边i->j,则在二分图中引入边i->j',设二分图最大匹配为m,则结果就是n-m。
二分图最大独立集=顶点数-二分图最大匹配
在N个点的图G中选出m个点,使这m个点两两之间没有边,求m最大值。
如果图G满足二分图条件,则可以用二分图匹配来做.最大独立集点数 = N - 最大匹配数。
这里是第一个结论,最少的点(即覆盖数)=最大匹配数
题意:有两台机器A和B以及N个需要运行的任务。每台机器有M种不同的模式,而每个任务都恰好在一台机器上运行。如果它在机器A上运行,则机器A需要设置为模式xi,如果它在机器B上运行,则机器A需要设置为模式yi。每台机器上的任务可以按照任意顺序执行,但是每台机器每转换一次模式需要重启一次。请合理为每个任务安排一台机器并合理安排顺序,使得机器重启次数尽量少。
求的是最少点
#include<iostream>#include<cstdio>#include<list>#include<algorithm>#include<cstring>#include<string>#include<queue>#include<stack>#include<map>#include<vector>#include<cmath>#include<memory.h>#include<set>#define ll long long#define LL __int64#define eps 1e-8const ll INF=9999999999999;using namespace std;#define M 400000100#define inf 0xfffffff//vector<pair<int,int> > G;//typedef pair<int,int> P;//vector<pair<int,int>> ::iterator iter;////map<ll,int>mp;//map<ll,int>::iterator p;vector<int>G[1012];int mp[1012][1012];int marry[1012];bool vis[1012];int n,m;void clear(){ memset(marry,-1,sizeof(marry)); memset(mp,0,sizeof(mp)); for(int i=0;i<1012;i++) G[i].clear();}bool dfs(int x){ for(int i=0;i<m;i++) { if(mp[x][i] && !vis[i]) { vis[i]=true; if(marry[i]==-1 || dfs(marry[i])) { marry[i]=x; return 1; } } } return 0;}int main(void){ int k; while(scanf("%d",&n),n) { clear(); scanf("%d %d",&m,&k); int u,v,w; for(int i=0;i<k;i++) { scanf("%d %d %d",&w,&u,&v); /*G[u].push_back(v);*/ /*G[v].push_back(u);*/ if(u>0 && v>0)//这里为什么请看poj1325的解题报告,有注释,连我自己都差点给忘了 错了半天 mp[u][v]=1; } int ans=0; for(int i=0;i<n;i++) { memset(vis,false,sizeof(vis)); if(dfs(i)) ans++; } printf("%d\n",ans); }}
- HDU1150 二分匹配 最少点覆盖=最大匹配数
- 【HDU1150】【建模】【最小点覆盖】【二分匹配】
- HDU1150/POJ1325_Machine Schedule(二分图/最小点覆盖=最大匹配)
- hdu1150 二分图匹配的最小点覆盖
- POJ 3041 Asteroids ( 最小点覆盖数=最大匹配数, 二分图匹配)
- 【二分图匹配】 最小点覆盖==最大匹配数
- POJ3041《Asteroids》方法:匈牙利算法(最小点覆盖数==最大二分匹配数)
- 最大匹配(1)--poj3041(最大匹配的应用 最大匹配=最小点覆盖数)
- HDU1150(二分图+最大匹配+匈牙利算法)
- hdu1150 二分图最大匹配模板
- hdu 1054 Strategic Game 最少点覆盖 二分图最大匹配
- poj 3041 Asteroids (二分图最大匹配 == 最小点覆盖数)
- hdu 1150 二分图 最小点覆盖=最大匹配
- HDU2119_Matrix(二分图/最小点覆盖=最大匹配)
- 最小点集覆盖=最大匹配<二分图>/证明
- 为什么二分图的最大二分匹配数等于最小点覆盖数
- POJ 1584 Robots 最少边覆盖 二分图最大匹配
- 二分图,最大匹配数,最小点覆盖,最小边覆盖
- LibLinear
- FileZilla Server的安装和设置
- 艺术与生活
- (二)UITabBar and UINavigationController基础教程之UITextField键盘隐藏及防止键盘遮挡
- 我希望在软件开发生涯初期就知道的 4 件事
- HDU1150 二分匹配 最少点覆盖=最大匹配数
- ACM题目,输出A/B。如果整除则输出整数,如果不能整除则保留两位小数,除式不成立则输出no。每组输出占一行。
- CSS 图片拼合
- 【ArcGIS API for Flex】GraphicLayer与Graphic
- wireshark过滤规则
- Spring MVC中Controller如何区分一个Form中包含的多个Submit按钮
- 网络子系统64_设备ip地址配置
- “Linux想要屌丝逆袭?只需要一款杀手级游戏。”
- FTP文件传输协议