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 [题目大意] 给出一些人和他们所喜欢的人,两个人相互喜欢就能配成一对, 问最后没有配对的人的最少数量 [题解] 求最少数量, ...
随机推荐
- vue2 学习笔记2
文中例子代码请参考github 品牌管理案例 添加新品牌 <body> <div id="app"> <div class="panel p ...
- C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter应该怎么用?
C#中ExecuteReader.ExecuteNonQuery.ExecuteScalar.SqlDataReader.SqlDataAdapter应该怎么用? (2013-10-16 13:21: ...
- xtrabackup部署以及使用
简介 备份mysql数据库一直是一个比较恶心的工作,主要就是备份的数据库比较大实在是慢.最近开始使用xtrabackup来备份数据库,速度上快了很多,尤其还原速度要快的多.下面我将从安装开始简要介绍一 ...
- 特别篇:Hyper-v群集模拟实战演示
介绍 由于前面几张的都是直接整理了下 九叔的hyper-v电子书发上来的,个人觉得他写的不是最详细,因此今天我按照自己的实际情况来写个模拟的实战演示.所有的东西都通过VMware WorkStatio ...
- python shell与反弹shell
python shell与反弹shell 正常shell需要先在攻击端开机情况下开启程序,然后攻击端运行程序,才能连接 反弹shell,攻击端是服务端,被攻击端是客户端正常shell,攻击端是客户端, ...
- 根据flickr id 下载图片
#coding=utf-8 import flickrapi import requests import os n=1 flickr=flickrapi.FlickrAPI('*********** ...
- 联想ts550服务器安装windows2008R2系统
发布时间:2018-10-18 点击数:4 服务器型号:联想 thinkserver ts550 系统:windowsserver2008R2 联想的 TS550 USB口全是USB3.0的,官方引 ...
- jQuery -- 光阴似箭(三):jQuery 操作 HTML 元素和属性
jQuery -- 知识点回顾篇(三):jQuery拥有操作 HTML 元素和属性的强大方法. 1. 获取HTML 元素的内容和属性 (1) 获得内容: text().html() 以及 val() ...
- SAP 维护视图创建与修改
维护视图创建与修改 维护视图创建 T-CODE:SE54 维护ABAP数据字典 维护已生产的对象 注意:当维护视图修改后,需要删除已生成的对象,重新创建已生成的对象,否则无法显示,这个小窍门我花了半天 ...
- Linux 小知识翻译 - 「补丁」(patch)
这次,聊聊补丁. 当有bug或者安全漏洞的时候,就会发布补丁.打上补丁之后,就能解决相应的bug或者安全漏洞. 那么,「补丁」到底是什么呢? 「补丁」只有少量的代码,一般都是对程序的一部分进行更新或者 ...