原题链接

这里有一个结论:最多能选取的藏身点个数等于最小路径可重复点覆盖的路径总数。

所以我们可以先传递闭包,然后求最小路径点覆盖即可。

  1. #include<cstdio>
  2. #include<cstring>
  3. using namespace std;
  4. const int N = 210;
  5. int mtc[N], n;
  6. bool a[N][N], v[N];
  7. inline int re()
  8. {
  9. int x = 0;
  10. char c = getchar();
  11. bool p = 0;
  12. for (; c < '0' || c > '9'; c = getchar())
  13. p |= c == '-';
  14. for (; c >= '0' && c <= '9'; c = getchar())
  15. x = x * 10 + c - '0';
  16. return p ? -x : x;
  17. }
  18. bool dfs(int x)
  19. {
  20. int i;
  21. for (i = 1; i <= n; i++)
  22. if (a[x][i] && !v[i])
  23. {
  24. v[i] = 1;
  25. if (!mtc[i] || dfs(mtc[i]))
  26. {
  27. mtc[i] = x;
  28. return true;
  29. }
  30. }
  31. return false;
  32. }
  33. int main()
  34. {
  35. int i, j, m, k, x, y, s = 0;
  36. n = re();
  37. m = re();
  38. for (i = 1; i <= m; i++)
  39. {
  40. x = re();
  41. y = re();
  42. a[x][y] = 1;
  43. }
  44. for (k = 1; k <= n; k++)
  45. for (i = 1; i <= n; i++)
  46. if (i ^ k)
  47. for (j = 1; j <= n; j++)
  48. if (i ^ j && j ^ k)
  49. a[i][j] |= a[i][k] && a[k][j];
  50. for (i = 1; i <= n; i++)
  51. {
  52. memset(v, 0, sizeof(v));
  53. s += dfs(i);
  54. }
  55. printf("%d", n - s);
  56. return 0;
  57. }

CODE[VS]2494 Vani和Cl2捉迷藏的更多相关文章

  1. codevs 2494 Vani和Cl2捉迷藏

    /* 一开始大意了 以为和bzoj上的祭祀是一样的(毕竟样例都一样) 这里不知相邻的点可以相互到达 间接相连的也可以到达 所以floyed先建立一下关系 再跑最大独立集 下面贴一下95 和 100的代 ...

  2. POJ1422 Air Raid 和 CH6902 Vani和Cl2捉迷藏

    Air Raid Language:Default Air Raid Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9547 A ...

  3. 【JZOJ3423】Vani和Cl2捉迷藏&【BZOJ1143】祭祀river

    description vani和cl2在一片树林里捉迷藏-- 这片树林里有N座房子,M条有向道路,组成了一张有向无环图. 树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔.如果从房子 ...

  4. [tyvj1957 Poetize5] Vani和Cl2捉迷藏 (最小路径可重点覆盖+二分图最大匹配)

    传送门 Description 这片树林里有N座房子,M条有向道路,组成了一张有向无环图. 树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔.如果从房子A沿着路走下去能够到达B,那么在 ...

  5. 「Poetize5」Vani和Cl2捉迷藏

    描述 Description 这片树林里有N座房子,M条有向道路,组成了一张有向无环图.树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔.如果从房子A沿着路走下去能够到达B,那么在A和 ...

  6. joyoi1957 「Poetize5」Vani和Cl2捉迷藏

    最小路径可重点覆盖.先传递闭包,然后拆点,\(n-\)最大匹配,看算法竞赛进阶指南. #include <iostream> #include <cstring> #inclu ...

  7. 总结-一本通提高篇&算竞进阶记录

    当一个人看见星空,就再无法忍受黑暗 为了点亮渐渐沉寂的星空 不想就这样退役 一定不会鸽の坑 . 一本通提高篇 . 算竞进阶 . CDQ & 整体二分 . 平衡树 . LCT . 字符串 . 随 ...

  8. 中山纪中集训Day1测试(摸鱼)

    AT3 粉刷匠 Description 赫克托是一个魁梧的粉刷匠,而且非常喜欢思考= = 现在,神庙里有N根排列成一直线的石柱,从1到N标号,长老要求用油漆将这些石柱重新粉刷一遍.赫克托有K桶颜色各不 ...

  9. BZOJ1095:[ZJOI2007]Hide 捉迷藏(动态点分治)

    Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩 捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条 ...

随机推荐

  1. atrous convolution

    atrous convolution 简而言之,带孔卷积: 来自:https://zhuanlan.zhihu.com/p/27470685 假设一个二维信号,每个位置对应的输出为和卷积核为,带孔卷积 ...

  2. Makefile编写参考

    http://www.ruanyifeng.com/blog/2015/02/make.html

  3. 线上问题!----------org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe

    1.问题出现 昨晚项目在上线的时候因为推广的原因,新增的大量请求.在八点的时候. org.apache.catalina.connector.ClientAbortException: java.io ...

  4. SpringMVC HttpMessageConverter

    如StringHttpMessageConverter,read方法就是根据编码类型将HttpInputMessage中的数据变为字符串.write方法就是根据编码类型将字符串数据写入HttpOutp ...

  5. SQL Server子查询填充DataSet时报500内部错误的解决办法

    运行环境为Visual Studio 2010,数据库为SQL Server 2008. 执行下面SQL语句 SELECT SubsiteId, SubsiteTitle, count(Collect ...

  6. scrapy 是指user_agent

    1.倒入random模块 2.在settings文件中添加useragent列表 MY_USER_AGENT = [ "Mozilla/4.0 (compatible; MSIE 6.0; ...

  7. 201. Bitwise AND of Numbers Range (Bit)

    Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND(按位与) of all nu ...

  8. Shell教程 之第一个shell脚本

    1.第一个shell脚本 打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行 输入一些代码 #!/bi ...

  9. Jasper打印示例

    import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List ...

  10. 填坑专记-手脱FSG壳

      妈呀,脱FGS壳真的是坎坷颇多,多亏吾爱破解前辈们的帮忙.我一定要记录下来,省的以后再无法解决.   已经查看是FSG壳了.找到入口也容易了.重点就是脱壳并修复好它. 脱壳   OEP为:   使 ...