POJ 1486 (2分匹配 必须变判断)
来源:互联网 发布:java 捕获异常 编辑:程序博客网 时间:2024/05/16 17:43
建图很好想到,主要是后面判断这条匹配边是不是必须变。 只需要吧当前这个匹配拆开,并且在图中吧这条边去掉。对对于左边的点去找增光路,如果不能找到,说明就是匹配必须边。
#include<cstdio>#include<algorithm>#include<iostream>#include<cmath>#include<queue>#include<stack>#include<string>#include<cstring>#include<map>#include<vector>#include<set>#include<ctime>#include<stdlib.h>#include<iostream>using namespace std;bool G[30][30];struct Point{ int x,y; void read() { scanf("%d %d",&x,&y); }};Point rect[30][2];Point num[30];bool vis[30];int link[30];bool match(int x,int n){ for(int i=1;i<=n;i++) { if(G[x][i] && !vis[i]) { vis[i]=1; if(link[i]==-1 || match(link[i],n)) { link[i]=x; return 1; } } } return 0;}int Hungury(int n){ int ans=0; memset(link,-1,sizeof link); for(int i=1;i<=n;i++) { memset(vis,0,sizeof vis); if(match(i,n)) ans++; } return ans;}int main(){ int n,ca=0; while(cin>>n&&n ) { for(int i=1;i<=n;i++) { scanf("%d %d",&rect[i][0].x,&rect[i][1].x); scanf("%d %d",&rect[i][0].y,&rect[i][1].y); } for(int i=1;i<=n;i++) num[i].read(); memset(G,0,sizeof G); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(rect[i][0].x<num[j].x && num[j].x<rect[i][1].x &&rect[i][0].y<num[j].y && num[j].y<rect[i][1].y) G[j][i]=1; } } printf("Heap %d\n",++ca); bool fg=0; if(Hungury(n)==n) fg=1; bool ff=0; if(fg) { for(int i=1;i<=n;i++) { memset(vis,0,sizeof vis); int tmp=link[i]; G[link[i]][i]=0; link[i]=-1; if(match(tmp,n)) { G[tmp][i]=1; continue; } if(ff) printf(" "); ff=1; printf("(%c,%d)",i+'A'-1,tmp); link[i]=tmp; G[tmp][i]=1; } } if(!ff) printf("none"); puts("\n"); } return 0;}
0 0
- POJ 1486 (2分匹配 必须变判断)
- 【完全二分匹配必须边】POJ 1486
- poj 1486 二分图最大匹配必须边
- poj 1486(二分图匹配的必须边:枚举)
- POJ 1486:二分图匹配的必须边
- POJ 1486 Sorting Slides(判断所有唯一匹配)
- 变分
- poj 1486(求二分图形成匹配的必须边)
- poj1486Sorting Slides【二分图匹配判断是否是必须】
- 机器学习(2) 变分推断
- 机器学习(2) 变分推断
- 变分原理
- 变分,近似
- 变分图像处理
- 变分推理
- 变分推断
- 变分算法
- 变分算法-应用
- js 获取json对象的Key、value
- 【sqlserver】阻止更新要求重建表的解决办法
- json字符串转为字典
- java定时器Timer,TimerTask每隔一段时间随机生成数字
- UVA10361转化思想使代码更加简洁
- POJ 1486 (2分匹配 必须变判断)
- 【memcache/redis】memcache常见问题汇总
- Xcode6模拟器app和文件在哪儿?
- poj 2352
- 动态切换数据源(spring3.0+hibernate3.0)
- ORACLE 函数VARCHAR2参数不能指定长度
- JDK的组成:Client Hotspot VM 与Server Hotspot VM 的区别 ???
- Obj-C中的@class
- Algorithms—138.Copy List with Random Pointer