传送门

题意:

给一个N*N的矩阵,有些格子有障碍,要求我们消除这些障碍,问每次消除一行或一列的障碍,最少要几次。
 

解析:

把每一行与每一列当做二分图两边的点。

某格子有障碍,则对应行与列连边。

选出最少的点,使得所有边被覆盖。

最小点覆盖。

——代码

 #include <cstdio>
#include <cstring>
#define M(x, a) memset(a, x, sizeof(a)) using namespace std; const int MAXN = ;
int n, k, cnt, ans;
int head[MAXN], next[MAXN * MAXN], to[MAXN * MAXN], belong[MAXN];
bool vis[MAXN]; inline void add(int x, int y)
{
to[cnt] = y;
next[cnt] = head[x];
head[x] = cnt++;
} inline bool find(int u)
{
int i, v;
for(i = head[u]; i != -; i = next[i])
{
v = to[i];
if(!vis[v])
{
vis[v] = ;
if(!belong[v] || find(belong[v]))
{
belong[v] = u;
return ;
}
}
}
return ;
} int main()
{
int i, x, y;
scanf("%d %d", &n, &k);
M(-, head);
for(i = ; i <= k; i++)
{
scanf("%d %d", &x, &y);
add(x, y);
}
for(i = ; i <= n; i++)
{
M(, vis);
if(find(i)) ans++;
}
printf("%d", ans);
return ;
}

最新文章

  1. 关于redis启动流程介绍
  2. jquery 时间运算、格式化的方法扩张
  3. C++语言-04-重载
  4. XAF使用数据库访问层缓存的提升性能
  5. 抽象类 接口 虚函数(C++模拟,个人见解)
  6. 【转】纯 CSS 实现高度与宽度成比例的效果
  7. DPC定时器
  8. HeadFirst设计模式 之 C++实现(二):Observer(观察者模式)
  9. 如何在Eclipse中开发并调试自己的插件(或者说如何将自己的代码插件化)
  10. 「操作系统」: Conditional Move Instructions(trap)
  11. Hibernate与Sleep的区别
  12. 使用WebView监控网页加载状况,PerformanceMonitor,WebViewClient生命周期
  13. Git命令(1)
  14. CentOS安装node.js-8.11.1+替换淘宝NPM镜像
  15. triplet loss 在深度学习中主要应用在什么地方?有什么明显的优势?
  16. django项目 报错:ImportError: cannot import name choice
  17. 安装python3
  18. mac 下 通过 brew 安装 MariaDB
  19. spring jpa 动态查询(Specification)
  20. PlantUML windows android

热门文章

  1. Properties没有被注意的地方
  2. spoj GCJ1C09C Bribe the Prisoners
  3. 成为Android高手必须掌握的8项基本要求
  4. PHP获取时间总结
  5. 【HEVC帧间预测论文】P1.2 An Efficient Inter Mode Decision Approach for H.264 Video Codin
  6. JavaScript 字符串与数字的相互转换
  7. Redhat5 安装序列号及版本说明
  8. Python 风格规范
  9. Unity3D windows平台视频录制录屏插件 UnityRecorder
  10. Django请求,响应,ajax以及CSRF问题