POJ1468 Sorting Slides
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 4442 | Accepted: 1757 |
Description
The situation is like this. The slides all have numbers written on them according to their order in the talk. Since the slides lie on each other and are transparent, one cannot see on which slide each number is written. 
Well, one cannot see on which slide a number is written, but one may deduce which numbers are written on which slides. If we label the slides which characters A, B, C, ... as in the figure above, it is obvious that D has number 3, B has number 1, C number 2
and A number 4.
Your task, should you choose to accept it, is to write a program that automates this process.
Input
of the slides. The slides will be labeled as A, B, C, ... in the order of the input.
This is followed by n lines containing two integers each, the x- and y-coordinates of the n numbers printed on the slides. The first coordinate pair will be for number 1, the next pair for 2, etc. No number will lie on a slide boundary.
The input is terminated by a heap description starting with n = 0, which should not be processed.
Output
If no matchings can be determined from the input, just print the word none on a line by itself.
Output a blank line after each test case.
Sample Input
4
6 22 10 20
4 18 6 16
8 20 2 18
10 24 4 8
9 15
19 17
11 7
21 11
2
0 2 0 2
0 2 0 2
1 1
1 1
0
Sample Output
Heap 1
(A,4) (B,1) (C,2) (D,3) Heap 2
none
Source
————————————————————————————————————
题目的意思是给出n个矩形,里面每个分配一个数字,问唯一的数字有哪几个
思路:二分图匹配关键边判定,先求二分图匹配,再枚举去掉已匹配的每一条边,判是否匹配数减少,若减少则为关键边
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <vector>
#include <set>
#include <stack>
#include <map>
#include <climits> using namespace std; #define LL long long
const int INF = 0x3f3f3f3f; const int MAXN=1000;
int uN,vN; //u,v数目
int g[MAXN][MAXN];//编号是0~n-1的
int linker[MAXN];
bool used[MAXN];
int mat[MAXN];
int aa[MAXN];
struct area
{
int x1,x2,y1,y2;
} s[100005];
struct point
{
int x,y;
} p[100005]; bool dfs(int u)
{
int v;
for(v=0; v<vN; v++)
if(g[u][v]&&!used[v])
{
used[v]=true;
if(linker[v]==-1||dfs(linker[v]))
{
linker[v]=u;
return true;
}
}
return false;
}
int hungary()
{
int res=0;
int u;
memset(linker,-1,sizeof(linker));
for(u=0; u<uN; u++)
{
memset(used,0,sizeof(used));
if(dfs(u)) res++;
}
return res;
} int main()
{
int k,n;
int cas=1;
while(~scanf("%d",&n)&&n)
{
for(int i=0; i<n; i++)
scanf("%d%d%d%d",&s[i].x1,&s[i].x2,&s[i].y1,&s[i].y2);
for(int i=0; i<n; i++)
scanf("%d%d",&p[i].x,&p[i].y);
memset(g,0,sizeof g);
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
if(p[i].x>s[j].x1&&p[i].x<s[j].x2&&p[i].y>s[j].y1&&p[i].y<s[j].y2)
g[i][j]=1;
}
uN=vN=n;
int Match=hungary();
printf("Heap %d\n",cas++); if(Match<n)
{
printf("none\n");
continue;
}
for(int i=0; i<n; i++)
mat[i]=linker[i];
int ct=0;
for(int i=0; i<n; i++)
{
g[mat[i]][i]=0;
if(hungary()<n)
{
aa[ct++]=i;
}
g[mat[i]][i]=1;
}
if(ct==0)
printf("none\n");
else
{
int q=0;
for(int i=0; i<ct; i++)
{
if(q++)
printf(" ");
printf("(%c,%d)",'A'+aa[i],mat[aa[i]]+1);
}
printf("\n");
}
printf("\n");
}
return 0;
}
POJ1468 Sorting Slides的更多相关文章
- POJ 1486 Sorting Slides (KM)
Sorting Slides Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2831 Accepted: 1076 De ...
- 【POJ】1486:Sorting Slides【二分图关键边判定】
Sorting Slides Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5390 Accepted: 2095 De ...
- poj1486 Sorting Slides
Sorting Slides Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4812 Accepted: 1882 De ...
- poj 1486 Sorting Slides
Sorting Slides Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4469 Accepted: 1766 De ...
- UVA663 Sorting Slides(烦人的幻灯片)
UVA663 Sorting Slides(烦人的幻灯片) 第一次做到这么玄学的题,在<信息学奥赛一本通>拓扑排序一章找到这个习题(却发现标程都是错的),结果用二分图匹配做了出来 蒟蒻感觉 ...
- [ACM_图论] Sorting Slides(挑选幻灯片,二分匹配,中等)
Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...
- poj 1486 Sorting Slides(二分图匹配的查找应用)
Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...
- Sorting Slides(二分图匹配——确定唯一匹配边)
题目描述: Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he is not ...
- POJ 1486 Sorting Slides(寻找必须边)
题意:找出幻灯片与编号唯一对应的情况 思路: 1:求最大匹配,若小于n,则答案为none,否则转2 (不过我代码没有事先判断一开始的最大匹配数是否<n,但这样也过了,估计给的数据最大匹配数一定为 ...
随机推荐
- C# 判断ip地址是否正确
最后要用一方法判断ip地址是否正确,直接用.Net现成的类,方法如下: string ipStr="192.168.222.333"; IPAddress ip; if(IPAdd ...
- oracle 单表导出导入
exp username/password@服务名 file=d:\daochu.dmp tables=(tableneme,...)
- iOS.CM5.CM4.CM2
增量数据计算接口: CC_MDx_Init CC_MDx_Update CC_MDx_Final 全量数据计算接口: CC_MDx
- BZOJ 1391 [CEOI] Order - 网络流 最大流
Solution 非常简单的建边!!! 但是刚开始的代码不够体现社会主义的优越性, 于是我 .... 惨痛教训啊... 终于到了今天才能够体现社会主义优越性... Code #include<c ...
- VS2010正则批量替换set_和get_
批量替换set_: daohang.set_ChannelName(rowArray[0]["ChannelName"].ToString()); daohang.set_Chan ...
- zabbix监控系统_监控收集脚本使用分享
性能测试总是要监控服务器,做了zabbix监控之后,重要收集监控数据,这里分享下我是怎么做的. 准备文件 python2.7 pypa-setuptools.tar.gz -p -path /h ...
- Java Http协议处理类
public class HttpRequest { public static String doGet(String url,String params) throws Exception{ re ...
- How to Change MAC Address on Ubuntu
1 Open Terminal. 2 Log in as root so type: sudo -i and then write your password. 3 View your cur ...
- RabbitVCS - Ubuntu VCS Graphical Client
Easy version control for Linux RabbitVCS is a set of graphical tools written to provide simple and s ...
- vue组件中this和$el指向
示例代码为element ui 源码的select组件源码 控制台输出: 结论: this指向组件的实例. $el指向当前组件的DOM元素.