hdu1281(二分匹配+构图)
来源:互联网 发布:37轩辕剑剑气进阶数据 编辑:程序博客网 时间:2024/05/22 13:51
一个简单的二分构图题,因为以前做过更难的,所以这次很轻松的就AC了,不过关于求关键格子的那个思路还是在网上看的,水平还是很菜啊~~
把横坐标和纵坐标分别看做两个点集,某个格子能放车的话就在对应的横纵坐标之间连一条边,这样,二分图就建好了。明显的,每一条边都代表一个车,要求能最多放的车数也就等价于求二分最大匹配了。而对于关键格子,由于关键格子是指,少了这个格子后就放不了最多的车数了,因此,将棋盘中的某个格子删去,若还能求出原来的最大匹配数,则说明该格子不是关键格子,反之就是了。
代码如下:
#include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>#include<cmath>#include<algorithm>#include<queue>#include<stack>#include<set>#include<map>using namespace std;const int M=1010;const int N=210;bool g[N][N],vis[N];int n,m,k,ans,match[N];int u[N],v[N],first[N],next[N];void build(){ memset(first,-1,sizeof(first)); int i; for (i=0;i<k;i++) { scanf("%d%d",u+i,v+i); next[i]=first[u[i]]; first[u[i]]=i; }}bool dfs(int x,int tag){ int i,j; for (i=first[x];i!=-1;i=next[i]) if (!vis[v[i]] && tag!=i) { vis[v[i]]=true; if (match[v[i]]==-1 || dfs(match[v[i]],tag)){ match[v[i]]=x; return true; } } return false;}int get(int e){ int t=0; memset(match,-1,sizeof(match)); for (int i=1;i<=n;i++) { memset(vis,false,sizeof(vis)); if (dfs(i,e)) t++; } if (t==ans) return false; else return true;}int main(){ int i,j,T=1; while(~scanf("%d%d%d",&n,&m,&k)) { build(); ans=0; memset(match,-1,sizeof(match)); for (i=1;i<=n;i++) { memset(vis,false,sizeof(vis)); if (dfs(i,-1)) ans++; } int sum=0; for (i=1;i<=n;i++) { for (j=first[i];j!=-1;j=next[j]) if (get(j)) sum++; } printf("Board %d have %d important blanks for %d chessmen.\n",T++,sum,ans); }}
0 0
- hdu1281(二分匹配+构图)
- hdu1281+坐标构图+二分匹配
- hdu1281 二分匹配
- HDU1281 二分匹配 + 最需边
- hdu1281二分图匹配
- hdu1281-二分图匹配
- HDU1281 二分匹配
- hdu1281(二分图匹配)
- HDU1281 棋盘游戏 二分匹配
- hdu1281二分匹配关键边
- hdu1281二分匹配关键边
- HDU1281(最大二分匹配+枚举)
- 二分匹配 HDU1281 棋盘游戏
- hdu1281(二分图匹配)
- hdu1281 二分图匹配_必要边
- 二分图最大匹配 (hdu1281、1528)
- HDU1281棋盘游戏 二分图最大匹配
- HDU1281(二分图最大匹配)
- sql 递归查询
- ceph存储 centos下ulimit用法示例
- js获取table的行/列:table.rows[].cells[]
- 毕业生答辩 六月份你就知道用处了
- LeetCode:Unique Paths
- hdu1281(二分匹配+构图)
- kinect2.0 之摄像头
- Linux下安装tomcat
- ERROR 1143 (42000): SELECT command denied to user
- QT5.0.1在Windows下 出现QApplication: No such file or directory 问题的解决办法
- 烦恼也是一种幸福
- 鸟哥的私房菜笔记之基础命令
- GOOD 自定义EL表达式方法
- Dom4j解析XML时要用到jaxen的jar包