给一个矩阵,里面有一些不同颜色的气球。每次能够消灭一行或一列中某一种颜色的气球,问你在k次及以内,有哪些颜色的气球是不管怎样也消不完的。

那么思路就是,对每一种颜色的气球求最小点覆盖。>k 则为答案。

相当于 poj3041的加强版,由于矩阵中不是每个点都是等价的。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
const int maxn=105;
using namespace std; int mx[maxn],my[maxn],vis[maxn],e[maxn][maxn],n,cnt,mp[maxn][maxn],mat[maxn],ans[maxn];
map<int,int> mmp; int path(int i)
{
int j;
for(j=0;j<n;j++)
{
if(e[i][j]&&!vis[j])
{
vis[j]=1;
if(my[j]==-1||path(my[j]))
{
mx[i]=j;
my[j]=i;
return 1;
}
}
}
return 0;
} int hungry()
{
int res=0;
memset(mx,-1,sizeof mx);
memset(my,-1,sizeof my);
for(int i=0;i<n;i++)
{
if(mx[i]==-1)
{
memset(vis,0,sizeof vis);
res+=path(i);
}
}
return res;
} int main()
{
int k,i,j,m,p,x;
while(scanf("%d%d",&n,&k)&&(n||k))
{
cnt=1;
mmp.clear();
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&mp[i][j]);
if(mmp[mp[i][j]]) continue;
else
{
mmp[mp[i][j]]=cnt;
mat[cnt++]=mp[i][j];
}
}
m=0;
for(p=1;p<cnt;p++)
{
x=mat[p];
memset(e,0,sizeof e);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(mp[i][j]==x) e[i][j]=1;
if(hungry()>k) ans[m++]=x;
}
if(m==0) printf("-1\n");
else
{
sort(ans,ans+m);//wa了一次。 。
printf("%d",ans[0]);
for(i=1;i<m;i++)
printf(" %d",ans[i]);
puts("");
}
}
return 0;
}

最新文章

  1. [转]Android中Application类的用法
  2. jquery after append appendTo三个函数的区别
  3. Octopus系列之数据上传格式要求说明
  4. iOS-自定义导航栏后侧滑返回功能失效
  5. 让apache与mysql随着系统自动启动
  6. [转] 浅析HTTP协议
  7. 【ZeroMQ】消息模式
  8. Git起步--git安装与初次运行git前配置
  9. 低压电力采集平台DW710C与PC沟通
  10. MyDAL - .UpdateAsync() 之 .SetSegment 根据条件 动态设置 要更新的字段 使用
  11. Chinese word segment based on character representation learning 论文笔记
  12. 有return的情况下try catch finally的执行顺序(转)
  13. Java流程控制语句和数组整理
  14. WINDOWS NT操作系统的注册表文件
  15. maven打包时跳过测试
  16. jenkins API
  17. [转]加密经验集 =&gt; C#
  18. NMAP-高级用法
  19. python学习之函数和函数参数
  20. JUNIT单元测试时统计代码的覆盖率工具eclemma安装

热门文章

  1. 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
  2. 在logopond中看到的优秀设计随想
  3. Mapreduce执行过程分析(基于Hadoop2.4)——(三)
  4. HDU-3874 Necklace 线段树+离线
  5. js_sl 延迟菜单
  6. 第三百四十二天 how can I 坚持
  7. Cocos2d-x项目移植到WinRT/Win8小记
  8. SFTPTool 和 FTPTooL.java
  9. IC各元器件封装形式图解
  10. JVM的内存管理机制