题目来源: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 纸张与数字匹配(二分图+割边处理)的更多相关文章

  1. 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 农夫约翰上个 ...

  2. POJ 1486 Sorting Slides (二分图关键匹配边)

    题意 给你n个幻灯片,每个幻灯片有个数字编号1~n,现在给每个幻灯片用A~Z进行编号,在该幻灯片范围内的数字都可能是该幻灯片的数字编号.问有多少个幻灯片的数字和字母确定的. 思路 确定幻灯片的数字就是 ...

  3. POJ 1486 Sorting Slides(二分图匹配)

    [题目链接] http://poj.org/problem?id=1486 [题目大意] 给出每张幻灯片的上下左右坐标,每张幻灯片的页码一定标在这张幻灯片上, 现在问你有没有办法唯一鉴别出一些幻灯片 ...

  4. POJ 1486 Sorting Slides【二分图匹配】

    题目大意:有n张幻灯片和n个数字,幻灯片放置有重叠,每个数字隶属于一个幻灯片,现在问你能够确定多少数字一定属于某个幻灯片 思路:上次刷过二分图的必须点后这题思路就显然了 做一次二分匹配后将当前匹配的边 ...

  5. POJ 1486 Sorting Slides(二分图完全匹配必须边)题解

    题意:给你n张照片的范围,n个点的坐标,问你能唯一确定那几个点属于那几张照片,例如样例中4唯一属于A,2唯一属于C,1唯一属于B,3唯一属于C 思路:进行二分图完全匹配,怎么判断唯一属于?匹配完之后删 ...

  6. poj 1486 Sorting Slides(二分图匹配的查找应用)

    Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...

  7. 【POJ】1486:Sorting Slides【二分图关键边判定】

    Sorting Slides Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5390   Accepted: 2095 De ...

  8. POJ 1034 The dog task(二分图匹配)

    http://poj.org/problem?id=1034 题意: 猎人和狗一起出去,狗的速度是猎人的两倍,给出猎人的路径坐标,除了这些坐标外,地图上还有一些有趣的点,而我们的狗,就是要尽量去多的有 ...

  9. POJ 1466 Girls and Boys(二分图匹配)

    [题目链接] http://poj.org/problem?id=1466 [题目大意] 给出一些人和他们所喜欢的人,两个人相互喜欢就能配成一对, 问最后没有配对的人的最少数量 [题解] 求最少数量, ...

随机推荐

  1. shell编程-test命令(七)

    test命令常用作检查某些条件是否成立. 数值测试 -eq:检测两个数是否相等,相等返回true -ne:检测两个数是否相等,不相等返回true -gt:检测左边的数是否大于右边,是则返回true - ...

  2. 自动化测试基础篇--Selenium浏览器操作

    摘自https://www.cnblogs.com/sanzangTst/p/7462056.html  学习 Selenium 主要提供的是操作页面上各种元素的方法,但它也提供了操作浏览器本身的方法 ...

  3. EF CodeFirst使用Nuget更新数据库

    常用命令: 1.开启迁移 Enable-Migrations -EnableAutomaticMigrations 2.添加一条迁移记录 Add-Migration AddMigration001 3 ...

  4. SQL SERVER的锁机制

    SQL SERVER的锁机制(一)——概述(锁的种类与范围) SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源) SQL SERVER的锁机制(三)——概述(锁与事务隔离级别) ...

  5. c/c++ 编译器提供的默认6个函数

    c/c++ 编译器提供的默认6个函数 1,构造函数 2,拷贝构造函数 3,析构函数 4,=重载函数 5,&重载函数 6,const&重载函数 #include <iostream ...

  6. 讲解wpe抓包,封包

    相信大多数朋友都是会使用WPE的,因为这里也有不少好的教程,大家都辛苦了!先说说接触WPE的情况.当时好像是2011年,我本来不知道WPE对游戏竟有如此大的辅助作用的.起先找WPE软件的时候,只是因为 ...

  7. 【2018.10.11 C与C++基础】C Preprocessor的功能及缺陷(草稿)

    一.前言及参考资料 C Preprocessor即所谓的C预处理器,C++也继承了C的预处理程序,但在C++语言的设计与演化一书中,C++的设计者Bjarne Strustrup提及他从未喜欢过C预处 ...

  8. June 9. 2018, Week 23rd, Saturday

    I know nothing except the fact of my ignorance. 除了自己的无知,我一无所知. Believe it or not, true wisdom exists ...

  9. ELK+Kafka 企业日志收集平台(一)

    背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis ...

  10. CentOS7使用DevStack快速搭建OpenStack实验环境

    安装环境:centos7系统下安装devstack 一.下载Ubuntu14或者Centos7安装(实体机或者虚拟机都可以),建议选择最小安装镜像即可. 二.安装devstack 文档地址 http: ...