poj 3020 Antenna Placement(二分图匹配)
来源:互联网 发布:linux 反向映射 编辑:程序博客网 时间:2024/06/03 09:07
一个o能够覆盖相邻的两个*,问最少用多少个o覆盖全图,其实就是最小路径覆盖,可以把相邻的两个*看成一个点,然后就是求二分最大匹配
所求的最小路径覆盖 = |V|-最大独立集 = |V|-最大匹配数。而这题是无向匹配,多算了1倍,所以要除以2
#include<iostream>#include<algorithm>#include<string.h>#include<stack>#include<queue>#include<math.h>#include<cstdio>using namespace std;#define maxn 500int num[maxn][maxn];char s[maxn][maxn];bool map[maxn][maxn];bool vis[maxn]; int link[maxn];int n,m,cnt;bool dfs(int u){for(int i=1;i<=cnt;i++){if(!vis[i] && map[u][i]){vis[i]=1;if(link[i]==-1 || dfs(link[i])){link[i]=u;return true;}}}return false;}int match(){int ans=0;for(int i=1;i<=cnt;i++){memset(vis,0,sizeof(vis));if(dfs(i))ans++;}return ans;}int main(){int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);cnt=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>s[i][j];if(s[i][j]=='*')num[i][j]=++cnt;}memset(map,0,sizeof(map));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(s[i][j]=='*'){if(i-1>=1 && s[i-1][j]=='*')map[num[i-1][j]][num[i][j]]=1;if(i+1<=n && s[i+1][j]=='*')map[num[i+1][j]][num[i][j]]=1;if(j-1>=1 && s[i][j-1]=='*')map[num[i][j-1]][num[i][j]]=1;if(j+1<=m && s[i][j+1]=='*')map[num[i][j+1]][num[i][j]]=1;}fill(link,link+cnt+1,-1);printf("%d\n",cnt-match()/2);}return 0;}
- poj 3020 Antenna Placement 二分图匹配
- poj 3020 Antenna Placement 二分图匹配
- POJ 3020 Antenna Placement (二分匹配)
- poj 3020 Antenna Placement(二分图匹配)
- POJ 3020 Antenna Placement(二分图匹配)
- POJ 3020 Antenna Placement(二分图匹配)
- POJ 3020 Antenna Placement(最大二分匹配)
- POJ 3020 Antenna Placement 二分匹配
- ACM POJ 3020 Antenna Placement 二分匹配
- poj 3020 Antenna Placement 二分匹配
- POJ 3020 Antenna Placement(二分图的最大匹配)
- POJ 3020 Antenna Placement(二分图的最大匹配)
- POJ 3020 Antenna Placement(二分图的最大匹配)
- POJ 3020 Antenna Placement(二分匹配+拆点)
- HDU 3020 Antenna Placement(二分图匹配)
- poj 3020 Antenna Placement 二分图
- poj-3020-Antenna Placement-二分图
- Antenna Placement poj 3020 二分图
- Eclipse 代码注释模版设置( Code Templates)
- 敏捷开发用户故事系列之十一:CSDN博客用户故事分析
- http://blog.csdn.net/linyajun/article/details/3729121
- 使用 JNDI 得到数据源
- C语言课程设计——学生学籍管理系统
- poj 3020 Antenna Placement(二分图匹配)
- 努力吧,现在也不晚
- Android应用程序Zipalign化 -- 如何让Android应用程序更有效率的执行
- 在wpf datagrid中,想要根据一个条件来改变datagrid行的背景颜色
- android 自定义日历控件(有图有真相)
- poj 1924 The Treasure (bfs+地图预处理)
- ArcEngine中动态移动点的效果
- 喜欢穷逼的屌丝爹妈,就别要孩子了!(zz)
- EXCEL 自动匹配数据