POJ1486 Sorting Slides (二分图求最大匹配)
来源:互联网 发布:东盟共同体 知乎 编辑:程序博客网 时间:2024/06/05 16:14
题目链接:http://poj.org/problem?id=1486
题意:有n个矩形以及m个编号,给出矩形的右上角和左下角,以及每一个编号的坐标,如果该编号位于一个矩形内则编号对应这个矩形,求所有唯一的编号对应唯一的矩形
思路:构建二分图,编号对应矩形连边,求出最大匹配res,如果res=n则有可能成立,依次讲边删除,再求最大匹配,得出结果和res不一样,则这条边的编号和矩形是唯一对应的
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#define maxn 1030using namespace std;int n,G[maxn][maxn],list[maxn],vis[maxn],link[maxn];int x1[maxn],y1[maxn],x2[maxn],y2[maxn];int find (int u){ for (int i=1;i<=n;i++) { if (G[u][i] && vis[i]==0) { vis[i]=1; if (list[i]==-1 || find(list[i])) { list[i]=u; return 1; } } } return 0;}int hungry(){ memset(list,-1,sizeof(list)); int sum=0; for (int i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); if (find(i)) sum++; } return sum;}int main(){ int cas=1; while (scanf("%d",&n)!=EOF) { if (n==0) break; memset(G,0,sizeof(G)); for (int i=1;i<=n;i++) { scanf("%d%d%d%d",&x1[i],&x2[i],&y1[i],&y2[i]); } for (int i=1;i<=n;i++) { int x,y; scanf("%d%d",&x,&y); for (int j=1;j<=n;j++) { if (x>x1[j] && x<x2[j] && y>y1[j] && y<y2[j]) G[i][j]=1; } } printf("Heap %d\n",cas++); int flag=0,res=hungry(); for (int i=1;i<=n;i++) link[i]=list[i]; if (res==n) { for (int i=1;i<=n;i++) { int u=link[i]; G[u][i]=0; if (hungry()!=res) { if (flag) printf(" "); printf("(%c,%d)",'A'+i-1,u); flag=1; } G[u][i]=1; } } if (!flag) { printf("none"); } printf("\n\n"); }}
0 0
- POJ1486 Sorting Slides (二分图求最大匹配)
- POJ1486 Sorting Slides 二分图最大匹配 必要匹配
- POJ1486 Sorting Slides【二分匹配】
- POJ1486 Sorting Slides 二分图
- poj1486 sorting slides (二分图最大匹配的唯一性)
- poj1486 Sorting Slides 二分图匹配的必须边
- Sorting Slides(poj1486,绝对匹配边)
- POJ 1486 Sorting Slides(二分图最大匹配:关键边)
- POJ 1486 Sorting Slides(二分图最大匹配:关键边)
- POJ 1486 Sorting Slides(二分图最大匹配:关键边)
- poj1486 - Sorting Slides
- POJ1486:Sorting Slides
- poj1486 Sorting Slides
- POJ 1486 Sorting Slides 最大二分匹配 匈牙利算法
- POJ - 1486 Sorting Slides 二分图 完美匹配
- poj 1486 Sorting Slides(二分图匹配必要边)
- ZOJ-1197-Sorting Slides【二分图匹配】【拓扑排序】
- poj 1486 Sorting Slides(二分图匹配)
- 委托使用心得
- Mac下同时安装多个版本的JDK
- xcode EditText 软键盘自动退出
- Mysql错误:ERROR 1205 (HY000): Lock wait timeout exceeded解决办法
- Web安全之语法知识补习
- POJ1486 Sorting Slides (二分图求最大匹配)
- SSH端口转发实现代理服务器
- leetcode系列(60)N-Queens, N-Queens II
- C++primer学习:模板编程(3):效率与灵活
- Javascript 学习 笔记三
- Android Bluetooth Low Energy(Android低功耗蓝牙)
- Undefined symbols for architecture x86_64错误
- 一个iOS应用开发背后的流程
- java <!-- 这是我的第二个程序, Scanner类 -->