hdu 1498 50 years, 50 colors(二分匹配_匈牙利算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1498
50 years, 50 colors
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1918 Accepted Submission(s):
1058
balloons floating around the campus, it's so nice, isn't it? To celebrate this
meaningful day, the ACM team of HDU hold some fuuny games. Especially, there
will be a game named "crashing color balloons".
There will be a n*n
matrix board on the ground, and each grid will have a color balloon in it.And
the color of the ballon will be in the range of [1, 50].After the referee shouts
"go!",you can begin to crash the balloons.Every time you can only choose one
kind of balloon to crash, we define that the two balloons with the same color
belong to the same kind.What's more, each time you can only choose a single row
or column of balloon, and crash the balloons that with the color you had chosen.
Of course, a lot of students are waiting to play this game, so we just give
every student k times to crash the balloons.
Here comes the problem:
which kind of balloon is impossible to be all crashed by a student in k
times.

begins with two integers n, k. n is the number of rows and columns of the
balloons (1 <= n <= 100), and k is the times that ginving to each
student(0 < k <= n).Follow a matrix A of n*n, where Aij denote the color
of the ballon in the i row, j column.Input ends with n = k = 0.
colors of which are impossible to be crashed by a student in k times. If there
is no choice, print "-1".
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; int n,m;
int vis[],Map[][],ok[],cc[]; bool Find(int x,int now)
{
for (int i=; i<=n; i++)
{
if (!vis[i]&&Map[x][i]==now)
{
vis[i]=;
if (!ok[i])
{
ok[i]=x;
return true;
}
else
{
if (Find(ok[i],now))
{
ok[i]=x;
return true;
}
}
}
}
return false;
} int main()
{
int flag,ans,s[];
while (~scanf("%d%d",&n,&m))
{
flag=;
memset(cc,,sizeof(cc));
memset(Map,,sizeof(Map));
if (n==&&m==)
break;
for (int i=; i<=n; i++)
{
for (int j=; j<=n; j++)
{
scanf("%d",&Map[i][j]);
cc[Map[i][j]]=;//记录这个颜色出现过
}
}
memset(ok,,sizeof(ok));
int k=;
for (int i=; i<=; i++)
{
memset(ok,,sizeof(ok));
ans=;
if (cc[i]==) //判断颜色是否出现过,加入这里不进行标记的话最后输出的是没有被刷完的颜色数字,就会输出一些乱七八糟的东西
{
for (int j=; j<=n; j++)
{
memset(vis,,sizeof(vis));
if (Find(j,i))
ans++;
}
if (ans>m) //如果最大匹配数大于m次的话就是刷不完的
{
s[++k]=i;
flag=;
}
}
}
if (flag==)
printf ("-1\n");
else
{
for (int i=; i<k; i++) //控制输出格式
{
printf ("%d ",s[i]);
}
printf ("%d\n",s[k]);
}
}
return ;
}
hdu 1498 50 years, 50 colors(二分匹配_匈牙利算法)的更多相关文章
- hdu 3729 I'm Telling the Truth(二分匹配_ 匈牙利算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3729 I'm Telling the Truth Time Limit: 2000/1000 MS ( ...
- HDU 1150:Machine Schedule(二分匹配,匈牙利算法)
Machine Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu2063 最大二分匹配(匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 2063 过山车 二分匹配(匈牙利算法)
简单题hdu2063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Ot ...
- POJ 3014:Asteroids(二分匹配,匈牙利算法)
id=3041">Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14399 Acce ...
- 二分图的最大匹配以及带权匹配【匈牙利算法+KM算法】
二分图算法包括 匈牙利算法 与 KM算法. 匈牙利算法 在这里写上模板. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 #include< ...
- HDU5090--Game with Pearls 二分图匹配 (匈牙利算法)
题意:给N个容器,每个容器里有一定数目的珍珠,现在Jerry开始在管子上面再放一些珍珠,放上的珍珠数必须是K的倍数,可以不放.最后将容器排序,如果可以做到第i个容器上面有i个珍珠,则Jerry胜出,反 ...
- HDU 6178 Monkeys(树上的二分匹配)
http://acm.hdu.edu.cn/showproblem.php?pid=6178 题意:现在有一n个顶点的树形图,还有k只猴子,每个顶点只能容纳一只猴子,而且每只猴子至少和另外一只猴子通过 ...
- HDU - 3081 Marriage Match II 【二分匹配】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3081 题意 有n对男女 女生去选男朋友 如果女生从来没和那个男生吵架 那么那个男生就可以当她男朋友 女 ...
随机推荐
- 网络流量统计using ADB
/proc/net/xt_qtaguid/stats 基本覆盖目前所有机型且统计流量全面 adb shell cat /proc/net/xt_qtaguid/stats | grep (uid#) ...
- 第112天:javascript中函数预解析和执行阶段
关于javascript中的函数: 1.预解析:把所有的函数定义提前,所有的变量声明提前,变量的赋值不提前 2.执行 :从上到下执行,但有例外(setTimeout,setInterval,aja ...
- hdu6415 Rikka with Nash Equilibrium (DP)
题目链接 Problem Description Nash Equilibrium is an important concept in game theory. Rikka and Yuta are ...
- 使用android资源
1.我们可以命名的资源种类有多少? 答: res/anim/ XML文件,它们被编译进逐帧动画(frame by frame animation)或补间动画(tweened animation)对象 ...
- 洛谷 P4116 Qtree3
Qtree系列第三题 我是题面 读完题大概不难判断是一道树剖的题 这道题的关键是记录两种状态,以及黑点的序号(不是编号) 线段树啊当然 定义两个变量v,f,v表示距离根节点最近的黑点,默认-1,f则表 ...
- [HDU5677]ztr loves substring
ztr loves substring Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)
2016年伊始,有了VR虚拟现实硬件设备: 暴风魔镜4–好奇者的新玩具 . 2015年下半年的朋友圈中各种VR.AR的新闻层次不穷,搞的我也心痒痒的:好歹咱也是职业的Unity3D程序员,高大上的O ...
- BZOJ 1070 修车 【费用流】
Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同 的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序, ...
- 用Visual C#开发基于OpenCV的Windows应用程序
http://blog.163.com/wangxh_jy/blog/static/28233883201001581640283/ 关于详细的配置及程序运行截图,请下载:http://downloa ...
- 图片虚拟目录--即图片保存在window硬盘上面
这个是图片保存在电脑的硬盘上面的图片上传设置,既不是在web工程中,也不是在专门的图片服务器中,下面是配置方法: r 这里的Document base 我们这里设置为F:\images 如果在浏览器访 ...