题目链接:【http://acm.hdu.edu.cn/showproblem.php?pid=1498】

题意:给出一个大小为n*n(0<n<100)的矩阵,矩阵中放入m种颜色(标号为1-m),然后对于每种颜色有k次操作,每次操作可以选择一行或者一列,然后把这一行或者这一列的这种颜色全部去掉,求每种颜色k次操作以后,不能去掉的颜色是哪几种颜色,从小到大输出。

最小顶点覆盖要求用最少的点(X或Y中都行),让每条边都至少和其中一个点关联。Knoig定理:二分图的最小顶点覆盖数等于二分图的最大匹配数。

横坐标映射成X点集合,纵坐标映射成Y点,把每个矩阵中相同颜色点的坐标(x,y)建立一条边x->y,目的是选择最少的点把所有的边(即:矩阵中的点)覆盖。

#include<bits/stdc++.h>
using namespace std;
const int maxn = ;
int n, k;
struct node
{
int u, v;
};
vector<node>E[];
vector<int>Edge[maxn], ans;
void init()
{
for(int i = ; i <= ; i++)
E[i].clear();
ans.clear();
}
int fa[maxn], vis[maxn];
bool match(int u)
{
int l = Edge[u].size();
for(int i = ; i < l; i++)
{
int v = Edge[u][i];
if(vis[v]) continue;
vis[v] = ;
if(fa[v] == - || match(fa[v]))
{
fa[v] = u;
return true;
}
}
return false;
}
int hungry()
{
int ret = ;
memset(fa, -, sizeof(fa));
for(int i = ; i <= n; i++)
{
memset(vis, , sizeof(vis));
if(match(i)) ret++;
}
return ret;
}
int main ()
{
while(scanf("%d%d", &n, &k))
{
if(n == && k == ) break;
init();
int t, ma = ;
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
{
scanf("%d", &t);
E[t].push_back(node{i, j});
ma = max(ma, t);
}
for(int i = ; i <= ma; i++)
{
for(int j = ; j <= n; j++)
Edge[j].clear();
int l = E[i].size();
for(int j = ; j < l; j++)
Edge[E[i][j].u].push_back(E[i][j].v);
if(hungry() > k) ans.push_back(i);
}
int l = ans.size();
if(!l) printf("-1\n");
else
{
for(int i = ; i < l - ; i++)
printf("%d ", ans[i]);
printf("%d\n", ans[l - ]);
}
}
return ;
}

 

POJ 1498[二分匹配——最小顶点覆盖]的更多相关文章

  1. poj2226-Muddy Fields二分匹配 最小顶点覆盖 好题

    题目 给到一个矩阵,有些格子上是草,有些是水.需要用宽度为1,长度任意的若干块木板覆盖所有的水,并不能覆盖草,木板可以交叉,但只能横竖放置,问最少要多少块板. 分析 经典的矩阵二分图构图和最小点覆盖. ...

  2. POJ2226 Muddy Fields 二分匹配 最小顶点覆盖 好题

    在一个n*m的草地上,.代表草地,*代表水,现在要用宽度为1,长度不限的木板盖住水, 木板可以重叠,但是所有的草地都不能被木板覆盖. 问至少需要的木板数. 这类题的建图方法: 把矩阵作为一个二分图,以 ...

  3. nyoj 237 游戏高手的烦恼 二分匹配--最小点覆盖

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=237 二分匹配--最小点覆盖模板题 Tips:用邻接矩阵超时,用数组模拟邻接表WA,暂时只 ...

  4. POJ 3020 Antenna Placement【二分匹配——最小路径覆盖】

    链接: http://poj.org/problem?id=3020 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

  5. UVA 11419 SAM I AM(最大二分匹配&最小点覆盖:König定理)

    题意:在方格图上打小怪,每次可以清除一整行或一整列的小怪,问最少的步数是多少,又应该在哪些位置操作(对输出顺序没有要求). 分析:最小覆盖问题 这是一种在方格图上建立的模型:令S集表示“行”,T集表示 ...

  6. poj 2446 (二分匹配)

    题意:除了所给的一些点外,问能不能用1*2的矩形覆盖所有的点,矩形间不能重叠. 思路:简单二分匹配,,,,,,, #include<stdio.h> #include<string. ...

  7. HDU - 1150 Machine Schedule(二分匹配---最小点覆盖)

    题意:有两台机器A和B,A有n种工作模式(0~n-1),B有m种工作模式(0~m-1),两台机器的初始状态都是在工作模式0处.现在有k(0~k-1)个工作,(i,x,y)表示编号为i的工作可以通过机器 ...

  8. HDU 1498 50 years, 50 colors (行列匹配+最小顶点覆盖)

    题目:点击打开链接 题意:每个格子有不同颜色的气球用不同数字表示,每次可选某一行              或某一列来戳气球.每个人有K次机会.求最后哪些气球不能在             k次机会内 ...

  9. POJ - 2226 Muddy Fields (最小顶点覆盖)

    *.*. .*** ***. ..*. 题意:有一个N*M的像素图,现在问最少能用几块1*k的木条覆盖所有的 * 点,k为>=1的任意值. 分析:和小行星那题很像.小行星那题是将一整行(列)看作 ...

随机推荐

  1. CSS基础复习

    重新撸一遍CSS的基础,因为以前面试的时候被问到,突然发现某些概念搞不清楚,瞬间懵逼了,其实我都知道的,就是因为不会炒概念,导致面试官觉得我很low,你特么连这个都不知道还敢来面试,回家种田去好嘛! ...

  2. Java实现JsApi方式的微信支付

    要使用JsApi进行微信支付,首先要从微信获得一个prepay_id,然后通过调用微信的jsapi完成支付,JS API的返回结果get_brand_wcpay_request:ok仅在用户成功完成支 ...

  3. oozie与mapreduce简单案例

    准备工作  拷贝原来的模板 mkdir oozie-apps cd oozie-apps/ cp -r ../examples/apps/mar-reduce . mv map-reduce mr-w ...

  4. JFinal向客户端渲染图片的方法

    JFinal提供了好几种方便的render但是不知道为啥就是没有提供直接渲染图片的render,如果我们直接在Controller的方法中往输入流中写的话是还是会有默认的render生效的,比如下面这 ...

  5. JS中短路运算符&&和||

    在JS函数中我们经常会使用到短路运算符,主要是逻辑与(&&) 和 逻辑或(||) 1.逻辑与 && 的运算方式 var a = 5 && 6; cons ...

  6. struts的标签

    <%@ taglib uri="/struts-tags" prefix="s"%> <%@ taglib uri="/WEB-IN ...

  7. 解读Linux命令格式(转)

    解读Linux命令格式   环境 Linux HA5-139JK 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x8 ...

  8. Spring如何解析Dubbo标签

    1. 要了解Dubbo是如何解析标签的,首先要清楚一点就是Spring如何处理自定义标签的,因为Dubbo的标签可以算是Spring自定义标签的一种情况: 2. Spring通过两个接口来解析自定义的 ...

  9. Spring 中Bean的装配方式

    最近又买了一本介绍SSM框架的书,是由黑马程序员编写的,书上讲的很好理解,边看边总结一下.主要总结一下bean的装配方式. Bean的装配可以理解为依赖系统注入,Bean的装配方式即Bean依赖注入的 ...

  10. 想弄一弄tensorflow,先弄numpy

    现在晚上凉快点了, 下班回家可以学会东东了.. 这次的书是一个印度人写的. 按着示例代码弄起先.. #!/usr/bin/env python # -*- coding: utf-8 -*- impo ...