/**
题目:SAM I AM UVA - 11419
链接:https://vjudge.net/problem/UVA-11419
题意:给定n*n的矩阵,'X'表示障碍物,'.'表示空格;你有一把枪,每一发子弹可以消除一行或者一列的障碍物,
问最少需要多少颗子弹可以清空障碍物?以及输出具体的哪些行,哪些列。 思路:最小点集覆盖问题,等价于最大匹配。 求具体的哪些行,哪些列,需要借助于匈牙利树。从X中所有未匹配的点出发扩展匈牙利树,标记
树中的所有点,则X中所有的未标记点和Y中的所有标记点就是结果。证明。。留给读者思考~~~(来自lrj训练指南P356)
*/ #include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<set>
#include<cstring>
using namespace std;
const int MAXN = ;
int f[MAXN][MAXN];
int vis[MAXN], vit[MAXN], S[MAXN], T[MAXN], flag[MAXN];
int N;
///模板
bool Find(int x)///走交替路,寻找增广路
{
vis[x] = ;///标记走交替路过程中左边经过的点。
for(int i = ; i <= N; i++){///n表示右侧点数。
if(f[x][i]&&vit[i]==){
vit[i] = ;///标记走交替路过程中右边经过的点。
if(T[i]==||Find(T[i])){
T[i] = x;///右边第i个点和左边第x个点匹配成功。
S[x] = i;///左边第x个点和右边第i个点匹配成功。
return true;
}
}
}
return false;
}
int main()
{
int n, m, k;
while(scanf("%d%d%d",&n,&m,&k)==)
{
if(n==&&m==&&k==) break;
N = n;
int x, y;
memset(f, , sizeof f);
for(int i = ; i <= k; i++){
scanf("%d%d",&x,&y);
f[x][y] = ;
}
int ans = ;
memset(T, , sizeof T);
memset(S, , sizeof S);
memset(flag, , sizeof flag);
///模板
for(int i = ; i <= N; i++){
memset(vis, , sizeof vis);
memset(vit, , sizeof vit);
if(Find(i)) ans++;
}
printf("%d",ans);
memset(vis, , sizeof vis);
memset(vit, , sizeof vit);
for(int i = ; i <= N; i++){
if(S[i]==){///从未匹配点出发,走交替路,不可能找到增广路,否则原先的匹配不是最大的。所以S,T数组的值不会更新。
Find(i);
}
}
for(int i = ; i <= N; i++){
if(vis[i]==){
printf(" r%d",i);
}
}
for(int i = ; i <= N; i++){
if(vit[i]){
printf(" c%d",i);
}
}
printf("\n");
}
return ;
}

SAM I AM UVA - 11419 最小点集覆盖 要输出具体覆盖的行和列。的更多相关文章

  1. SAM I AM UVA - 11419(最小顶点覆盖+输出一组解)

    就是棋盘问题输出一组解 https://blog.csdn.net/llx523113241/article/details/47759745 http://www.matrix67.com/blog ...

  2. 训练指南 UVA - 11419(二分图最小覆盖数)

    layout: post title: 训练指南 UVA - 11419(二分图最小覆盖数) author: "luowentaoaa" catalog: true mathjax ...

  3. UVA 11419 SAM I AM (最小点覆盖,匈牙利算法)

    题意:给一个r*c的矩阵,某些格子中可能有一些怪物,可以在一行或一列防止一枚大炮,大炮会扫光整行/列的怪,问最少需要多少炮?输出炮的位置. 思路: 先每行和列都放一个炮,把炮当成点,把怪当成边,一边连 ...

  4. 最小点集覆盖/HDU2119

    题目连接 先试一下题/?/ 最小点集覆盖=最大匹配 /*根据i.j建图,跑一边最大匹配 */ #include<cstdio> #include<cstring> using ...

  5. 最小点集覆盖=最大匹配<二分图>/证明

    来源 最小点集覆盖==最大匹配. 首先,最小点集覆盖一定>=最大匹配,因为假设最大匹配为n,那么我们就得到了n条互不相邻的边,光覆盖这些边就要用到n个点. 现在我们来思考为什么最小点击覆盖一定& ...

  6. poj3041 Asteroids 匈牙利算法 最小点集覆盖问题=二分图最大匹配

    /** 题目:poj3041 Asteroids 链接:http://poj.org/problem?id=3041 题意:给定n*n的矩阵,'X'表示障碍物,'.'表示空格;你有一把枪,每一发子弹可 ...

  7. UVA 10806 最小费用最大流

    终于可以写这道题的题解了,昨天下午纠结我一下下午,晚上才照着人家的题解敲出来,今天上午又干坐着想了两个小时,才弄明白这个问题. 题意很简单,给出一个无向图,要求从1 到 n最短路两次,但是两次不允许经 ...

  8. 覆盖问题:最大覆盖问题(Maximum Covering Location Problem,MCLP)和集覆盖问题(Location Set Covering Problem,LSCP)

    集覆盖问题研究满足覆盖所有需求点顾客的前提下,服务站总的建站个数或建 设费用最小的问题.集覆盖问题最早是由 Roth和 Toregas等提出的,用于解决消防中心和救护车等的应急服务设施的选址问题,他们 ...

  9. hdu 1255 覆盖的面积(求覆盖至少两次以上的面积)

    了校赛,还有什么途径可以申请加入ACM校队?  覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

随机推荐

  1. tomcat 部署 RESTful 服务实例

    1.建立简单restfule服务 参考:java 利用JAX-RS快速开发RESTful 服务实例 简单代码: package com.example; import javax.ws.rs.GET; ...

  2. fc游戏反编译流程

    最近打算玩一下nes游戏,重拾一下6502汇编. 摸索了几天,觉得下面这个反汇编的流程比较好: 用 fceux 载入游戏,选择debug菜单Code/Data Logger,点击Start,稍微玩一下 ...

  3. 转:用十条命令在一分钟内检查Linux服务器性能

    转自:http://www.infoq.com/cn/news/2015/12/linux-performance?utm_campaign=rightbar_v2&utm_source=in ...

  4. 在Eclipse中点击ctrl+h打开搜索界面,范围指定的项目中搜索包含person的文件

    ctrl+h ===>File Search Tab ===>在containing text里输入person,scope ==>selected resources,搜索就可以了

  5. Linux命令计算文件中某一列的平均值

    例如每秒执行一次top命令,把结果输出到某个文件中保存,现在需要统计这段时间内某个进程的平均CPU占用率,可使用以下命令 | grep "GameServer_r" | awk ' ...

  6. ionic 签名、打包

    ionic cordova platform add androidionic cordova build android [debug版本,无需签名] ionic cordova build and ...

  7. Vue Router 获取url路径参数 query

    https://router.vuejs.org/zh/api/#路由对象属性 $route.query 类型: Object 一个 key/value 对象,表示 URL 查询参数.例如,对于路径  ...

  8. 使用python在WEB页面上生成EXCEL文件

    来自:http://blog.sina.com.cn/s/blog_5d18f85f0101bxo7.html 近日写的一个程序需要在WEB服务器上生成EXCEL文件供用户下载,研究了一下找到了以下比 ...

  9. docker容器跨服务器的迁移方式export和save(转)

      前沿: 这两天把报警平台放在了docker里面跑了,但是宿主机本身性能就不好,所以导致mongodb到挂了好几次了.这次搞了一台牛逼的服务器,虽说是opentstack里面的主机,但是iops 很 ...

  10. CI框架下nginx重写规则

    因为: server { listen ; server_name 222.73.130.124; location / { index index.html index.htm index.php; ...