最大匹配数就等于最大点覆盖,因为在图里面,凡是要覆盖的点必定是连通的,而最大匹配之后,若还有点没有覆盖到,则必定有新的匹配,与最大匹配数矛盾,如果去掉一些匹配,则必定有点没有覆盖到。

POJ 1469

比较简单,用的经典的二分图匹配算法。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int p[500][510],c[500][510];
int vis[510];
int lefts[510];
int cp[500],cc[500],n,m;
void init()
{
memset(vis,0,sizeof vis);
memset(lefts,-1,sizeof lefts);
memset(cp,0,sizeof cp);
memset(cc,0,sizeof cc);
memset(p,0,sizeof p);
memset(c,0,sizeof c);
}
bool match(int u)
{
for (int j=0;j<cp[u];j++){
int v=p[u][j];
if (1){
vis[v]=1;
if (lefts[v]==-1 || match(lefts[v])){
lefts[v]=u;
return true;
}
}
}
return false;
}
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
init();
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++){
int tmp,t2;
scanf("%d",&tmp);
for (int j=0;j<tmp;j++){
scanf("%d",&t2);
p[t2][cp[t2]++]=i;
c[i][cc[i]++]=t2;
}
}
int ans=0;
for (int i=1;i<=m;i++){
memset(vis,0,sizeof vis);
if (match(i)) ans++;
}
//cout<<ans<<endl;
if (ans==n) puts("YES");
else puts("NO"); }
return 0;
}

  

POJ 3041

最小覆盖问题,转化为求最大匹配

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int mat[][],cnt[];
int vis[],lefts[];
int n,k;
bool match(int u)
{
for (int i=;i<cnt[u];i++){
int v=mat[u][i];
if (!vis[v]){
vis[v]=;
if (lefts[v]==- || match(lefts[v])){
lefts[v]=u;
return true;
}
}
}
return false;
}
int main()
{ while (scanf("%d%d",&n,&k)!=EOF)
{
memset(mat,,sizeof mat);
memset(cnt,,sizeof cnt);
int a,b;
for (int i=;i<k;i++){
scanf("%d%d",&a,&b);
mat[a][cnt[a]++]=b;
}
memset(lefts,-,sizeof lefts);
int ans=;
for (int i=;i<=n;i++){
memset(vis,,sizeof vis);
if (match(i)) ans++;
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. 使用脚本自动配置matlab安装libsvm和随机森林工具箱
  2. C#:注册组件
  3. 【BZOJ-1367】sequence 可并堆+中位数
  4. JavaScript事件处理的三种方式(转)
  5. 分类算法之朴素贝叶斯分类(Naive Bayesian Classification)
  6. winform中DataGridView的数据实现导出excel
  7. 安卓手机内外SD卡互换
  8. thread block grid
  9. call和apply和bind区别
  10. [Swift]LeetCode1033. 移动石子直到连续 | Moving Stones Until Consecutive
  11. 新浪云SAE 关于部分函数不能使用的做法
  12. java学习之匿名内部类
  13. 【Teradata】配置PE和AMP(congfig和reconfig工具、vprocmanager)
  14. simHash 简介以及 java 实现
  15. 最新Java基础面试题及答案整理
  16. C#_委托与事件
  17. nginx for Windows Known issues:path
  18. (1.6)MySQL执行计划
  19. 转方阵|2012年蓝桥杯B组题解析第五题-fishers
  20. ANDROID init进程

热门文章

  1. vue axios 数据请求实现
  2. python+ selenium + webdriver的环境准备
  3. Phoenix与HBase集成进行数据分析
  4. 题解:luogu P1247
  5. 使用Spring Data JPA的Spring Boot
  6. STM32 MacOS开发
  7. IIS7/8 HTTP Error 500.19 错误 0x80070021 错误代码:0x8007000d
  8. Ubuntu不会放弃32位应用程序
  9. 51nod 1179:最大的最大公约数
  10. php.laravel.csrf