hdu 4619 Warm up 2_最大独立集
来源:互联网 发布:月薪3万的程序员 编辑:程序博客网 时间:2024/05/22 08:20
三个人整个下午都想不出这题
后来看题解,竟然用匈牙利算法的最大独立集,我顿时晕了。
题意:给竖着和横着的方块,除去重叠的,最多能留下几个方块
#include <cstdlib>#include <iostream>using namespace std;#define N 1010struct Point{ int x,y; Point(){} Point(int a,int b){x=a;y=b;} bool operator==(const Point &a)const{ return x==a.x&&y==a.y; }}pn[N],pm[N];int link[N],n,m;bool vis[N],g[N][N];bool judge(Point a,Point b){ if(a==b||Point(a.x+1,a.y)==b||Point(b.x,b.y+1)==a||Point(a.x+1,a.y)==Point(b.x,b.y+1)) return 1; return 0;}bool dfs(int u){ int i; for(i=0;i<m;i++){ if(!vis[i]&&g[u][i]){ vis[i]=1; if(link[i]==-1||dfs(link[i])){ link[i]=u; return 1; } } } return 0;}int main(int argc, char *argv[]){ int i,j; while(scanf("%d%d",&n,&m)&&m||n){ memset(g,0,sizeof(g)); for(i=0;i<n;i++) scanf("%d%d",&pn[i].x,&pn[i].y); for(i=0;i<m;i++) scanf("%d%d",&pm[i].x,&pm[i].y); for(i=0;i<n;i++) for(j=0;j<m;j++) if(judge(pn[i],pm[j])) g[i][j]=1; memset(link,-1,sizeof(link)); int sum=0; for(i=0;i<n;i++){ memset(vis,0,sizeof(vis)); sum+=dfs(i); } printf("%d\n",n+m-sum); } //system("PAUSE"); return EXIT_SUCCESS;}
- hdu 4619 Warm up 2_最大独立集
- HDU 4619 Warm up 2 最大独立集
- HDU 4619 Warm up 2(最大独立集)
- hdu4619 Warm up 2 (最大独立集)
- HDU 4619 Warm up 2(贪心、并查集 | 二分图最大独立集)
- hdu 4619 Warm up 2 (二分图最大独立集)
- HDU 4619 Warm up 2(点独立集)
- hdu 4619 Warm up 2 (两种解法:1.并查集 2.最大独立集)
- HDU 4619 Warm up 2 最大匹配数
- hdu 4619 Warm up 2 ( 二分图最大匹配 )
- hdu 4619 Warm up 2(二分图最大匹配)
- HDU 4619 Warm up 2(最大流或二分匹配)
- hdu 4619 Warm up 2
- HDU 4619 Warm up 2
- HDU 4619 Warm up 2
- hdu 4619 Warm up 2
- HDU 4619 Warm up 2
- HDU 4619 Warm up 2
- java即时通信解决方案openfire+spark完整安装指南
- 详解linux下的串口通讯开发
- 黑马程序员--07.集合框架--08.【TreeSet的Comparator排序】【TreeSet总结】
- Linux 修改用户登录名
- Enable JRE plugin for Firefox ( by quqi99 )
- hdu 4619 Warm up 2_最大独立集
- 谈谈final, finally, finalize的区别
- hdu 4612 Warm up
- FFmpeg 移植 Android
- jquery插件tablesorter
- Windows cmd命令行连接MySQL命令
- crt 连接 linux
- 关于Oracle使用SQL/Plus或者PL/SQL连接失败的使用若干经验
- 首字母变大写