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

时间:2022-09-30 11:57:06

题意:给你n张照片的范围,n个点的坐标,问你能唯一确定那几个点属于那几张照片,例如样例中4唯一属于A,2唯一属于C,1唯一属于B,3唯一属于C

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

思路:进行二分图完全匹配,怎么判断唯一属于?匹配完之后删掉某一条匹配边再跑一次二分图匹配,如果还能完全匹配,那么就不是唯一,反之唯一。

代码:

#include<set>
#include<map>
#include<stack>
#include<cmath>
#include<queue>
#include<vector>
#include<string>
#include<cstdio>
#include<cstring>
#include<sstream>
#include<iostream>
#include<algorithm>
typedef long long ll;
using namespace std;
const int maxn = + ;
const int MOD = 1e9 + ;
const int INF = 0x3f3f3f3f;
struct node{
int x1, x2, y1, y2;
}p[maxn];
struct Node{
int x, y;
}a[maxn];
struct Edge{
int to, next;
}edge[maxn * ];
int g[maxn][maxn], linker[maxn], ans[maxn], n;
bool used[maxn];
bool dfs(int u){
for(int v = ; v < * n; v++){
if(g[u][v] && !used[v]){
used[v] = true;
if(linker[v]== - || dfs(linker[v])){
linker[v] = u;
return true;
}
}
}
return false;
}
int hungary(){
int res = ;
memset(linker, -, sizeof(linker));
for(int u = ; u < * n; u++){
memset(used, false, sizeof(used));
if(dfs(u)) res++;
}
return res;
}
bool inside(node m, Node n){
if(n.x > m.x1 && n.x < m.x2 && n.y > m.y1 && n.y < m.y2) return true;
return false;
}
int main(){
int ca = ;
while(~scanf("%d", &n) && n){
for(int i = ; i < n; i++){
scanf("%d%d%d%d", &p[i].x1, &p[i].x2, &p[i].y1, &p[i].y2);
}
memset(g, , sizeof(g));
for(int i = ; i < n; i++){
scanf("%d%d", &a[i].x, &a[i].y);
for(int j = ; j < n; j++){
if(inside(p[j], a[i])){
g[i][n + j] = g[n + j][i] = ;
}
}
}
printf("Heap %d\n", ca++);
int ret = hungary();
memcpy(ans, linker, sizeof(ans));
if(ret != * n) printf("none\n");
else{
bool ok = false;
for(int i = n; i < * n; i++){
g[i][ans[i]] = g[ans[i]][i] = ;
ret = hungary();
if(ret == * n) continue;
printf("%s(%c,%d)", ok == true? " " : "",'A' + (i - n), ans[i] + );
ok = true;
g[i][ans[i]] = g[ans[i]][i] = ;
}
if(!ok) printf("none\n");
else printf("\n");
}
printf("\n");
}
return ;
}

POJ 1486 Sorting Slides(二分图完全匹配必须边)题解的更多相关文章

  1. POJ 1486 Sorting Slides &lpar;二分图关键匹配边&rpar;

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

  2. poj 1486 Sorting Slides&lpar;二分图匹配的查找应用&rpar;

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

  3. POJ 1486 Sorting Slides (KM)

    Sorting Slides Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2831   Accepted: 1076 De ...

  4. poj 1486 Sorting Slides

    Sorting Slides Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4469   Accepted: 1766 De ...

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

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

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

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

  7. POJ 1486 Sorting Slides&lpar;寻找必须边&rpar;

    题意:找出幻灯片与编号唯一对应的情况 思路: 1:求最大匹配,若小于n,则答案为none,否则转2 (不过我代码没有事先判断一开始的最大匹配数是否<n,但这样也过了,估计给的数据最大匹配数一定为 ...

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

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

  9. poj 1486 纸张与数字匹配(二分图&plus;割边处理)

    题目来源:http://poj.org/problem?id=1486 题意: 算出所有独一无二的字母与数字的组合,使二分图完全匹配 我以为所有点都要独一无二匹配时输出匹配方法 题解: 先得到一个完全 ...

随机推荐

  1. linux学习笔记-前篇

    大学毕业已经*年了,从事嵌入式开发的工作也*年了. 不过,老干些裸机开发,感觉很是枯燥,一咬牙一跺脚,决定从今天开始学习Linux操作系统,顺便记录下学习过程中所遇到的问题与心得. 自己从前完全没 ...

  2. 2015年11月30日 spring初级知识讲解(一)装配Bean

    序,Spring的依赖注入是学习spring的基础.IOC为控制反转,意思是需要的时候就由spring生成一个,而不是先生成再使用. 写在前面 Spring提供面向接口编程,面向接口编程与依赖注入协作 ...

  3. Maven Integration for Eclipse 正确地址

    m2eclipse has moved from sonatype to eclipse. The correct update site is http://download.eclipse.org ...

  4. Vss服务端用户存在&comma;但客户端登陆不进去

    打开客户端Vss提示“Cannot find SS.INI file for user userName”,这个错误是找不到用户userName的SS.INI文件. 解决办法 在服务器上找到Vss共享 ...

  5. MVC 中引入Jquery文件的几种方法

    方法1: <script src="@Url.Content("~/Scripts/jquery-1.9.1.js")" type="text/ ...

  6. 老李推荐:第4章3节《MonkeyRunner源码剖析》ADB协议及服务&colon; ADB协议概览

    老李推荐:第4章3节<MonkeyRunner源码剖析>ADB协议及服务: ADB协议概览   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试, ...

  7. codecademy quiz——JavaScript Promise

    Evernote Export What is the fulfilled value of Promise.all()?  A Promise     An object     An array ...

  8. 查看python的OpenCV版本

    安装"opencv" pip install opencv-python查看版本 import cv2 cv2.__version__

  9. python中的字符串编码问题——3&period;各操作系统下的不同编码方式

    各操作系统下的不同编码方式  先看一下 linux,python2.7 >>> B = b'\xc3\x84\xc3\xa8' >>> B.decode('utf- ...

  10. Machine Learning系列--CRF条件随机场总结

    根据<统计学习方法>一书中的描述,条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出 ...