POJ 3041 Asteroids(二分匹配)
来源:互联网 发布:重庆大学软件工程学院 编辑:程序博客网 时间:2024/06/17 18:24
http://poj.org/problem?id=3041
题目大意:
给一个N*N的矩阵,有些格子有障碍,要求我们消除这些障碍,问每次消除一行或一列的障碍,最少要几次。
思路:
将每行x看成一个X结点,每列Y看成一个Y结点,障碍的坐标x,y看成X到Y的一条边。构建出图后,就变成了找最少的点,使得这些点与所有的边相邻,即最小点覆盖问题。
最小点覆盖=最大匹配
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N=505;int n,link[N],map[N][N];bool vis[N];bool dfs(int u){ for(int i=1;i<=n;i++) { if(!vis[i]&&map[u][i]) { vis[i]=true; if(link[i]==-1||dfs(link[i])) { link[i]=u; return true; } } } return false;}int hungary(){ int ans=0; memset(link,-1,sizeof(link)); for(int i=1;i<=n;i++) { memset(vis,false,sizeof(vis)); if(dfs(i)) ans++; } return ans;}int main(){ int m,x,y; while(~scanf("%d%d",&n,&m)) { memset(map,0,sizeof(map)); while(m--) { scanf("%d%d",&x,&y); map[x][y]=1; } printf("%d\n",hungary()); } return 0;}
阅读全文
0 0
- poj 3041 Asteroids (二分匹配)
- poj 3041 Asteroids (二分匹配)
- POJ 3041 Asteroids(二分匹配-hungary)
- POJ 3041-Asteroids(二分图匹配)
- POJ 3041 Asteroids(二分图匹配)
- POJ 3041 Asteroids (二分匹配)
- 【POJ】-3041-Asteroids(二分最大匹配)
- poj 3041 Asteroids (二分匹配)
- POJ 3041 Asteroids(二分匹配)
- POJ 3041 Asteroids 二分匹配
- 【POJ】3041 Asteroids 二分匹配
- POJ 3041 Asteroids(二分匹配)
- POJ 3041Asteroids(二分图最大匹配)
- POJ 3041 Asteroids(二分匹配模板题)
- POJ 3041 Asteroids(二分图最大匹配)
- POJ 3041 Asteroids(二分图匹配+匈牙利算法)
- POJ 3041 Asteroids(二分匹配模板题)
- poj 3041 Asteroids(二分图最大匹配)
- 在Linux下将PNG和JPG批量互转的四种方法
- 阿里云CentOS7中安装JDK1.8
- PID调节(理论)
- 加密解密(四)——非对称加密算法
- Groovy入门(一)—— Groovy语法
- POJ 3041 Asteroids(二分匹配)
- 10-面向对象
- Linux信号机制之sigaction结构体浅析
- SpringBoot(1)
- C语言一周学习内容总结
- 【ccf 201709-2】公共钥匙盒
- android 7.0 关闭系统自动旋转
- C++ 图的实现
- 阿里云CentOS7中安装Maven3.5