poj 1486 纸张与数字匹配(二分图+割边处理)
题目来源:http://poj.org/problem?id=1486
题意:
算出所有独一无二的字母与数字的组合,使二分图完全匹配
我以为所有点都要独一无二匹配时输出匹配方法
题解:
先得到一个完全匹配,然后每次割边,如果某次割边后可以完全匹配,则这条边不是必须的匹配
如果没有完全匹配或必要的组合数为零时,输出none
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int maxn=100;
bool ma[maxn][maxn],used[maxn];
int match[maxn];
int ans[maxn];
int cnd=0,n;
struct Node
{
int a,b,c,d;
}node[maxn];
bool dfs(int x)
{
if(used[x]==1)return 0;
else used[x]=1;
for(int i=1;i<=n;i++)
{
if(ma[x][i]==0)continue;
if(match[i]==0||dfs(match[i]))
{
match[i]=x;
return 1;
}
}
return 0;
}
int hug()
{
for(int i=1;i<=n;i++)
{
match[i]=0;
}
int res=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)used[j]=0;
if(dfs(i))res++;
}
return res;
}
int main()
{
while(scanf("%d",&n)==1)
{
if(n==0)break;
cnd++;
printf("Heap %d\n",cnd);
memset(ma,0,sizeof(ma));
for(int i=1;i<=n;i++)
scanf("%d %d %d %d",&node[i].a,&node[i].b,&node[i].c,&node[i].d);
for(int i=1;i<=n;i++)
{
int x,y;
scanf("%d %d",&x,&y);
for(int j=1;j<=n;j++)
{
if(x>=node[j].a&&x<=node[j].b&&y>=node[j].c&&y<=node[j].d)
{
ma[i][j]=1;
}
}
}
if(hug()==n)
{
for(int i=1;i<=n;i++)
ans[i]=match[i];
int fla=n;
for(int i=1;i<=n;i++)
{
int k=ans[i];
ma[k][i]=0;
if(hug()==n)
{
ans[i]=0;fla--;
}
ma[k][i]=1;
}
if(fla==0)
{
cout<<"none"<<endl;
}
else
{
int k=0;
for(int i=1;i<=n;i++)
{
if(ans[i]==0)continue;
printf("(%c,%d)",'A'+i-1,ans[i]);
k++;
if(k==fla)cout<<endl;
else cout<<" "; }
}
}
else
{
cout<<"none"<<endl;
}
cout<<endl;
}
return 0;
}
poj 1486 纸张与数字匹配(二分图+割边处理)的更多相关文章
- Luogu 1894 [USACO4.2]完美的牛栏The Perfect Stall / POJ 1274 The Perfect Stall(二分图最大匹配)
Luogu 1894 [USACO4.2]完美的牛栏The Perfect Stall / POJ 1274 The Perfect Stall(二分图最大匹配) Description 农夫约翰上个 ...
- POJ 1486 Sorting Slides (二分图关键匹配边)
题意 给你n个幻灯片,每个幻灯片有个数字编号1~n,现在给每个幻灯片用A~Z进行编号,在该幻灯片范围内的数字都可能是该幻灯片的数字编号.问有多少个幻灯片的数字和字母确定的. 思路 确定幻灯片的数字就是 ...
- POJ 1486 Sorting Slides(二分图匹配)
[题目链接] http://poj.org/problem?id=1486 [题目大意] 给出每张幻灯片的上下左右坐标,每张幻灯片的页码一定标在这张幻灯片上, 现在问你有没有办法唯一鉴别出一些幻灯片 ...
- POJ 1486 Sorting Slides【二分图匹配】
题目大意:有n张幻灯片和n个数字,幻灯片放置有重叠,每个数字隶属于一个幻灯片,现在问你能够确定多少数字一定属于某个幻灯片 思路:上次刷过二分图的必须点后这题思路就显然了 做一次二分匹配后将当前匹配的边 ...
- POJ 1486 Sorting Slides(二分图完全匹配必须边)题解
题意:给你n张照片的范围,n个点的坐标,问你能唯一确定那几个点属于那几张照片,例如样例中4唯一属于A,2唯一属于C,1唯一属于B,3唯一属于C 思路:进行二分图完全匹配,怎么判断唯一属于?匹配完之后删 ...
- poj 1486 Sorting Slides(二分图匹配的查找应用)
Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...
- 【POJ】1486:Sorting Slides【二分图关键边判定】
Sorting Slides Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5390 Accepted: 2095 De ...
- POJ 1034 The dog task(二分图匹配)
http://poj.org/problem?id=1034 题意: 猎人和狗一起出去,狗的速度是猎人的两倍,给出猎人的路径坐标,除了这些坐标外,地图上还有一些有趣的点,而我们的狗,就是要尽量去多的有 ...
- POJ 1466 Girls and Boys(二分图匹配)
[题目链接] http://poj.org/problem?id=1466 [题目大意] 给出一些人和他们所喜欢的人,两个人相互喜欢就能配成一对, 问最后没有配对的人的最少数量 [题解] 求最少数量, ...
随机推荐
- SQL Server 缓存清除与内存释放
Sql Server系统内存管理在没有配置内存最大值,很多时候我们会发现运行SqlServer的系统内存往往居高不下.这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系统峰 ...
- windows下安装mysql
windows 下安装mysql 1.先下载好 mysql5.7 版本的安装包,可以去官网自己下载,也可以从我的百度云分享 里面下载: 链接: https://pan.baidu.com/s/1VXk ...
- Microsoft.AspNet.Identity 重置密码
重置密码:先生成重置密码的Token,然后调用ResetPassword方法重置密码,密码要符合规则.. ApplicationUserManager UserManager => _userM ...
- c/c++ 标准库 pair 介绍
标准库 pair 介绍 问题:map里的元素由key和value组成,这个key和value的组合是什么类型呢??? 答案:pair类型 pair介绍: 它是模板 有2个公有成员可供访问. first ...
- IPerf——网络测试工具介绍与源码解析(1)
IPerf是一个开源的测试网络宽带并能统计并报告延迟抖动.数据包丢失率信息的控制台命令程序,通过参数选项可以方便地看出,通过设置不同的选项值对网络带宽的影响,对于学习网络编程还是有一定的借鉴意义,至少 ...
- vmware中连接U盘
1.首先安装VMware tools. 2.然后根据这篇经验操作 https://jingyan.baidu.com/article/7c6fb42828806480652c9062.html 3. ...
- 制作U盘启动-----计算机经验
这期呢我就先不打算写关于C的文章,这次就先给大家写几篇关于电脑系统安装的计算机经验篇.希望各位接下来看了我几期的经验文章,你们也能在电脑系统报销之时能够让其满血复活. 制作U盘启动 下载制作U盘启动的 ...
- 【大数据技术】Flink
“下一代大数据处理引擎王者” Apache Flink 它既能保证数据一致性“Exactly Once",又能实时快速的处理海量数据.与生俱来的 Watermark 功能让它能对复杂数据乱序 ...
- vue事件绑定处理
事件监听指令 v-on 指令监听 DOM 事件来触发一些 JavaScript 代码,通常是触发一个函数,简写@ <template> <div id="app" ...
- XPATH如何选择不包含某一个属性的节点?
XPATH如何选择不包含某一个属性的节点?今天博主在写一个爬虫的时候就碰到了这个问题. 我们知道选择包含某一特定属性的节点,可以使用例如//tbody/tr[@class]来选择.那么不含某属性的节点 ...