题目:点击打开链接

题意:每个格子有不同颜色的气球用不同数字表示,每次可选某一行

             或某一列来戳气球。每个人有K次机会。求最后哪些气球不能在

            k次机会内被戳破。将这些气球的编号按升序输出。

分析:行列匹配,每种颜色的气球都要判断,故dfs传参时加一个气球的

             编号。

感想:1、开始以为要按照最大匹配数按升序排列,昨天wa了一下午,把我搞郁闷了。

                    今天重新看题,是要按照id来排序。

             2、学习了vector的用法,以前都不会用。。。这个之后汇总了再。。。


代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std; struct node
{
int id;
int cnt;
}t[55];
int g[110][110];
int match[110];
int vis[110];
int n;
vector<int> myv; bool cmp(node a,node b)
{
return a.cnt>b.cnt;
}
bool dfs(int u,int v)
{
for(int i=0;i<n;i++)
{
if(g[u][i]==v && !vis[i])
{
vis[i]=true;
if(match[i]==-1||dfs(match[i],v))
{
match[i]=u;
return true;
}
}
}
return false;
}
int main()
{
int k,i,p,flag,j;
while(scanf("%d%d",&n,&k)&&n&&k)
{
flag=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&g[i][j]);
}
memset(t,0,sizeof(t));
for(p=1;p<=50;p++)
{
memset(match,-1,sizeof(match));
t[p].id=p;
for(i=0;i<n;i++)
{
memset(vis,0,sizeof(vis));
if(dfs(i,p))
t[p].cnt++;
}
}
sort(t+1,t+51,cmp);
myv.clear();
for(j=1;j<=50;j++)
{
if(t[1].cnt<=k)
break;
flag=1;
if(t[j].cnt>k)
myv.push_back(t[j].id);
}
sort(myv.begin(),myv.end());
if(flag)
{
for(i=0;i<myv.size();i++)
printf("%d%c",myv[i],i==myv.size()-1?'\n':' ');
}
if(!flag)
printf("-1\n");
}
return 0;
}

积累:

对vector中的元素排序:

头文件#include<algorithm>
vector<int> arr;
//输入数据
sort(arr.begin(),arr.end());

HDU 1498 50 years, 50 colors (行列匹配+最小顶点覆盖)的更多相关文章

  1. hdu149850 years, 50 colors (多个最小顶点覆盖)

    50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  2. POJ 1498[二分匹配——最小顶点覆盖]

    题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=1498] 题意:给出一个大小为n*n(0<n<100)的矩阵,矩阵中放入m种颜色(标号为1 ...

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

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

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

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

  5. hdu 1498 50 years, 50 colors(二分匹配_匈牙利算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1498 50 years, 50 colors Time Limit: 2000/1000 MS (Ja ...

  6. 50 years, 50 colors HDU - 1498(最小点覆盖或者说最小顶点匹配)

    On Octorber 21st, HDU 50-year-celebration, 50-color balloons floating around the campus, it's so nic ...

  7. HDU——1498 50 years, 50 colors

    50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  8. HDU 1498 50 years, 50 colors(最小点覆盖,坑称号)

    50 years, 50 colors Problem Description On Octorber 21st, HDU 50-year-celebration, 50-color balloons ...

  9. hdu 1498 50 years, 50 colors 最小点覆盖

    50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

随机推荐

  1. 解决:Unable to connect to repository https://dl-ssl.google.com/android/eclipse/site.xml

    ailed to fectch URl https://dl-ssl.google.com/android/repository/addons_list.xml, reason: Connection ...

  2. 修改Zabbix默认运行账户

    默认Zabbix运行的账户是Zabbix,但在自动部署的时候,Agent与Server的先后顺序不定,而且官方不建议两者使用同一个账户.   所以,解压压缩包后,进入目录: vi configure ...

  3. 最小化安装CentOS7 + xfce4 +PHP + nginx +mariadb 开发环境

    虚拟机自定义最小化安装,新增用户做为管理员,打开自动获取网络,桥接模式.所有的操作只有命令,不做解释,看不明白的可以自行搜索相关的资料. # 开头的行是注释行,# 开头的空行,我自己装机时做了快照.未 ...

  4. iOS开发相关图书推荐

    Objective-C编程之道:iOS设计模式解析 作      者 [美] Carlo Chung 著:刘威 译 出 版 社 人民邮电出版社 出版时间 2011-11-01 版      次 1 页 ...

  5. 《锋利的Jquery第二版》读书笔记 第一章

    按照书本介绍顺序整理jquery库相关的语法.要点. window.onload与$(document).ready()功能类似,前者需要所有资源加载完毕,且不能同时编写多个:后者加载完DOM结构即执 ...

  6. (转载)OC学习篇之---类的定义

    之前已经介绍了OC中的一个程序HelloWorld,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那 ...

  7. android string[] arraylist<string>互转

    string[] to arraylist<string>:eg:string[] str; arraylist<string> arr; for(int i=0;i<s ...

  8. cocosbuilder学习汇总

    目前与cocos2d-x-2.14版本对应的cocosbuilder版本为cocosbuilder-3,目前为alpha-5.稳定版本为cocosbuilder2.1,但与cocos2d-x不匹配(C ...

  9. trate

    from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text imp ...

  10. 二、python 函数

    1.定义函数 def max(x,y): if x>y: return x else: return y 如果定义空函数(函数还没想好怎么编写,只是为了让整个代码能够运行起来) def max( ...