这个题目说,有一个N*N的规格的方格。某些格子里有*号,每次可以消除一行或者一列中所有的*号。最少需要消多少次?

新学到的,什么什么定理,最少点覆盖等于最大匹配数。

这个定理可以这样来理解(看别人的),对于最大匹配状态下的一条匹配边,不可能两边同时存在可连的未匹配点,因为这样就可以增广了,所以对于一条匹配边,只要选取在其有未匹配点的一边的点就可以了,对于其他的匹配边同理。

接下来就是上模版的时候了。。。

召唤代码君:

  1. #include <cstdio>
  2. #include <vector>
  3. #define maxn 505
  4. using namespace std;
  5.  
  6. vector<int> r[maxn],c[maxn];
  7. int tr[maxn],tc[maxn],fc[maxn],tagc[maxn];
  8. int n,m,ans,R,C;
  9.  
  10. bool dfs(int cur,int T)
  11. {
  12. for (unsigned i=0; i<r[cur].size(); i++)
  13. {
  14. if (tagc[r[cur][i]]==T) continue;
  15. tagc[r[cur][i]]=T;
  16. if (fc[r[cur][i]]==0 || dfs(fc[r[cur][i]],T))
  17. {
  18. fc[r[cur][i]]=cur;
  19. return true;
  20. }
  21. }
  22. return false;
  23. }
  24.  
  25. int main()
  26. {
  27. scanf("%d%d",&n,&m);
  28. for (int T=1; T<=m; T++)
  29. {
  30. scanf("%d%d",&R,&C);
  31. if (tr[R]!=1) r[R].clear(),tr[R]=1;
  32. if (tc[C]!=1) fc[C]=0,tagc[C]=0;
  33. r[R].push_back(C);
  34. }
  35. for (int i=1; i<=n; i++)
  36. if (tr[i]!=0 && dfs(i,i)) ans++;
  37. printf("%d\n",ans);
  38. return 0;
  39. }

  

POJ3041_Asteroids的更多相关文章

随机推荐

  1. SQL Server 内存和换页(Paging)

    在进程开始执行时,进程首先申请虚拟地址空间VAS(Virtural Address Space),VAS是进程能够访问的地址空间,由于VAS不是真正的物理内存空间,操作系统必须将VAS隐射到物理内存空 ...

  2. CI/CD系列

    一.CI/CD系列 什么是CI/CD(译) Docker与CI/CD(转) Docker和CI/CD实战 二.Git 三.GitLab

  3. python002

    1.万恶的”+“号字符串拼接 字符串中的连接符+”会开辟一个新的空间,多一个“+“就会多开辟一个空间,影响性能 2.字符串格式化 ”%S“   :字符类型         ”%D“   ”数字类型  ...

  4. Android Library和Android APP、Java Library的区别

    Android Library和Android APP.Java Library的区别 Android Library在目录结构上与Android App相同,它能包含构建APP所需的一切(如源代码. ...

  5. Unity扩展编辑器三

    Scene视图是编辑游戏模型的地方,其实它还可以进行编辑,如下图所示,我给Scene视图做了简单的编辑 Scene视图的扩展是基于对象的,意思是你必须在Hierarchy视图中选择一个对象才行,Hie ...

  6. [C++]值传递和引用传递

    概念 在定义函数时函数括号中的变量名成为形式参数,简称形参或虚拟参数: 在主调函数中调用一个函数时,该函数括号中的参数名称为实际参数,简称实参,实参可以是常量.变量或表达式. 注意: C语言中实参和形 ...

  7. shell中中括号的使用

    原文出处:https://www.jianshu.com/p/855c9fb373ff Shell 里面的方括号(包括单中括号与双中括号)可用于以下三种情况的判断: 算术比较. 比如一个变量是否为0, ...

  8. mysql删除表中的记录

    大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME. DELET ...

  9. 比较undefined和“undefined”

    说实话,它们之间的区别挺明显的,我们一般认为undefined是JavaScript提供的一个“关键字”,而“undefined”却是一个字符串,只是引号的内容和undefined一样. undefi ...

  10. 微信小程序video视频组件

    支持mp4和m3u8的视频格式,其中mp4的需要是h264的视频编码 .1.如果您使用video组件是mp4的但不能播放,大部分是由于编码的问题,当然排除文件不存在等这些客观的因素条件.2.如果使用m ...