将每一行/每一列作为一个点,对于一个障碍(x,y),要么第x行和第y列的状态(是否攻击)只需要有一个就可以了,将第x行和第y列连边,就是二分图的最小点覆盖=最大匹配数。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 1005
4 struct ji{
5 int nex,to;
6 }edge[N*20];
7 int E,n,m,x,y,ans,head[N],flag[N],vis[N];
8 void add(int x,int y){
9 edge[E].nex=head[x];
10 edge[E].to=y;
11 head[x]=E++;
12 }
13 int dfs(int k){
14 if (vis[k])return 0;
15 vis[k]=1;
16 for(int i=head[k];i!=-1;i=edge[i].nex){
17 int v=edge[i].to;
18 if ((!flag[v])||(dfs(flag[v]))){
19 flag[v]=k;
20 flag[k]=v;
21 return 1;
22 }
23 }
24 return 0;
25 }
26 int main(){
27 scanf("%d%d",&n,&m);
28 memset(head,-1,sizeof(head));
29 for(int i=1;i<=m;i++){
30 scanf("%d%d",&x,&y);
31 add(x,y+n);
32 add(y+n,x);
33 }
34 for(int i=1;i<=n;i++){
35 memset(vis,0,sizeof(vis));
36 if (!flag[i])ans+=dfs(i);
37 }
38 printf("%d",ans);
39 }

最新文章

  1. andriod GridView
  2. 一些比较实用的javascript方法收集,留着有用
  3. Linux根文件系统的制作
  4. Oracle用户system解锁
  5. Altium Designer导出部分元件过滤不焊接的元件【worldsing笔记】
  6. Rouh set 入门知识1(基础定义篇)
  7. cocos2d-x 获取当前播放第几帧最高效的方法
  8. C# IIS7.0+ Web.Config 配置Session过期时间
  9. js通用方法检測浏览器是否已安装指定插件(IE与非IE通用)
  10. jQuery中有关mouse的事件--mousedown/up/enter/leave/over/out----2017-05-10
  11. Html 内容
  12. Android逆向学习资料
  13. ElasticSearch 2 (31) - 信息聚合系列之时间处理
  14. 移动端H5适配方法(盒子+图片+文字)
  15. 高效的数据压缩编码方式 Protobuf
  16. Oracle 10g 数据库的备份和还原
  17. 封装与继承(PHP学习)
  18. .net core i上 K8S(六).netcore程序的service网络代理模式
  19. Kattis - yoda 【字符串】
  20. 理解 virbr0

热门文章

  1. CF536D Tavas in Kansas(博弈论+dp)
  2. SpringBoot打包到docker(idea+传统方式)
  3. k8s replicaset controller分析(1)-初始化与启动分析
  4. 零基础入门C语言超详细的字符串详解
  5. ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置
  6. 反转单词顺序列 牛客网 剑指Offer
  7. Codeforces Round #741 (Div. 2)部分题题解
  8. Django settings.py设置 DEBUG=False后静态文件无法加载解决
  9. 2万字|30张图带你领略glibc内存管理精髓(因为OOM导致了上千万损失)
  10. 五(一)、spring 声明式事务注解配置