【题目大意】

在n*n的网格上有n个点,每次删除一行或者一列,问至少要删除几次才能删除完全部的这些店?

【思路】

在国庆最后一天到来前,把二分图的三个基本情况【最小点覆盖】【DAG图的最小路径覆盖】和【二分图的最大独立集】全部复习了一遍。

这道题是非常典型的最小点覆盖,指的是用最少的点让每条边都至少和两个集合中的某一个点关联。

最小点覆盖=二分图最大匹配数。

对于这道题而言,我们把横坐标作为集合X,纵坐标作为集合Y,对于点(x,y),由X中的x连向Y中的y。对于每条边,只要x和y中有一个被删除即可,明显的最小点覆盖模型。

十分钟水~

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int MAXN=;
vector<int> E[MAXN];
int lk[MAXN],vis[MAXN],n,k; int find(int u)
{
for (int i=;i<E[u].size();i++)
{
int v=E[u][i];
if (!vis[v])
{
vis[v]=;
if (!lk[v]||find(lk[v]))
{
lk[v]=u;
return ;
}
}
}
return ;
} void init()
{
scanf("%d%d",&n,&k);
for (int i=;i<=k;i++)
{
int x,y;
scanf("%d%d",&x,&y);
E[x].push_back(y);
}
} void solve()
{
int ans=;
memset(lk,,sizeof(lk));
for (int i=;i<=n;i++)
{
memset(vis,,sizeof(vis));
if (find(i)) ans++;
}
printf("%d",ans);
} int main()
{
init();
solve();
return ;
}

最新文章

  1. ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB
  2. escape(), encodeURI()和encodeURIComponent()(转)
  3. 研二下学期做的第一个项目(主要关于datagridview的一些笔记)
  4. 数据库SQL及相关
  5. ajax中文传送到模板显示为null
  6. UVa 1636 (概率) Headshot
  7. Android Socket编程基础
  8. PHP $_SERVER[&#39;PHP_SELF&#39;]、$_SERVER[&#39;SCRIPT_NAME&#39;] 与 $_SERVER[&#39;REQUEST_URI&#39;] 之间的区别
  9. Django的url解析
  10. apache kafka系列之-监控指标
  11. jetty作为内嵌服务器自启动
  12. Spark实战
  13. [Swift]LeetCode140. 单词拆分 II | Word Break II
  14. window.location各属性的值
  15. 联想RD450带Read10服务器操作系统密码忘记
  16. sqlserver表数据的修改
  17. 一: Introduction(介绍)
  18. Python2.7-collections
  19. ODI Studio拓扑结构的创建与配置(MySQL)
  20. 基于C/S模式的android手机与PC机通信系统的开发

热门文章

  1. 引用类型 ( 对象定义 )——Date 类型
  2. 用C++写一个没人用的ECS
  3. c++树,知道前序和中序求后序遍历
  4. Hie with the Pie(POJ3311+floyd+状压dp+TSP问题dp解法)
  5. Paramiko使用
  6. Verilog笔记.6.FIFO
  7. Java的继承和多态
  8. nginx之日志设置详解
  9. C中常用格式格式码
  10. 中国区的Azure添加到 VSTS 的 Service Endpoint