解:搜索......

我们可以每次选择分支少的搜索,或者说,贪心的搜索当前更优的决策。

每一层把能剪的点搞出来,按照度数/SIZ排序,然后依次搜索。加个最优化剪枝就完事了。

  1. #include <bits/stdc++.h>
  2.  
  3. const int N = , INF = 0x3f3f3f3f;
  4.  
  5. struct Edge {
  6. int nex, v;
  7. }edge[N << ]; int tp;
  8.  
  9. int e[N], siz[N], in[N], n, ans = INF;
  10. int v[N][N];
  11. bool del[N], vis[N];
  12.  
  13. inline bool cmp(const int &a, const int &b) {
  14. //return in[a] > in[b];
  15. return siz[a] > siz[b];
  16. }
  17.  
  18. inline void add(int x, int y) {
  19. tp++;
  20. edge[tp].v = y;
  21. edge[tp].nex = e[x];
  22. e[x] = tp;
  23. return;
  24. }
  25.  
  26. void DFS_1(int x, int f) {
  27. siz[x] = ;
  28. for(int i = e[x]; i; i = edge[i].nex) {
  29. int y = edge[i].v;
  30. if(y == f) continue;
  31. DFS_1(y, x);
  32. siz[x] += siz[y];
  33. }
  34. return;
  35. }
  36.  
  37. void DFS(int k, int d) {
  38. if(k >= ans) return;
  39. v[d][] = ;
  40. for(int x = ; x <= n; x++) {
  41. if(del[x] || !vis[x]) continue;
  42. /// vis[x]
  43. for(int i = e[x]; i; i = edge[i].nex) {
  44. int y = edge[i].v;
  45. if(vis[y] || del[y]) continue;
  46. v[d][++v[d][]] = y;
  47. }
  48. }
  49.  
  50. if(!v[d][]) {
  51. ans = std::min(ans, k);
  52. return;
  53. }
  54.  
  55. std::sort(v[d] + , v[d] + v[d][] + , cmp);
  56. for(int i = ; i <= v[d][]; i++) {
  57. vis[v[d][i]] = ;
  58. }
  59. k += v[d][] - ;
  60. for(int i = ; i <= v[d][]; i++) {
  61. int x = v[d][i];
  62. del[x] = ;
  63. vis[x] = ;
  64. DFS(k, d + );
  65. vis[x] = ;
  66. del[x] = ;
  67. }
  68. for(int i = ; i <= v[d][]; i++) {
  69. vis[v[d][i]] = ;
  70. }
  71. return;
  72. }
  73.  
  74. int main() {
  75.  
  76. // freopen("disease.in", "r", stdin);
  77. // freopen("disease.out", "w", stdout);
  78.  
  79. int m;
  80. scanf("%d%d", &n, &m);
  81. for(int i = , x, y; i <= m; i++) {
  82. scanf("%d%d", &x, &y);
  83. add(x, y); add(y, x);
  84. in[x]++; in[y]++;
  85. }
  86. DFS_1(, );
  87. vis[] = ;
  88. DFS(, );
  89.  
  90. printf("%d\n", ans);
  91. return ;
  92. }

AC代码

洛谷P1041 传染病控制的更多相关文章

  1. 洛谷 P1041 传染病控制

    P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...

  2. [NOIP2003] 提高组 洛谷P1041 传染病控制

    题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染病,难以准确判别病毒携带 ...

  3. 洛谷—— P1041 传染病控制

    https://www.luogu.org/problem/show?pid=1041 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜 ...

  4. 洛谷 P1041 错解

    P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...

  5. AC日记——传染病控制 洛谷 P1041

    传染病控制 思路: 题目想问的是: 有一棵树: 对于除1外每个深度可以剪掉一棵子树: 问最后剩下多少节点: 题目意思一简单,这个题立马就变水了: 搜索就能ac: 数据有为链的情况,按深度为层次搜索的话 ...

  6. 【noip】跟着洛谷刷noip题

    传送门 1.铺地毯 d1t1 模拟 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> # ...

  7. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  8. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  9. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

随机推荐

  1. 在layui中使用ajax不起作用

    又是一个坑,坑了我一个下午.在layui插件中使用jquery的ajax请求,一点反应都没有,不管是改成get还是post请求,后台毫无反应,前端谷歌调试也没有报半点错. js代码如下: layui. ...

  2. echo "" > 和 echo "" >> 的区别

    在写shell脚本中,如果判断一个文件已经存在,但希望重写这个文件,一般用如下方式 echo "" > file.txt 这个表示清空文件的内容,如果使用 echo “” & ...

  3. RocketMQ消息队列安装

    一.官方安装文档 http://rocketmq.apache.org/docs/quick-start/ 下载地址 https://github.com/apache/rocketmq/releas ...

  4. Java 基础类型 默认值

    (1)数据库里的列,如果有默认值,不能赋值有业务含义的值. (2)int 默认值 java会分配默认值的额.

  5. Java多线程1:进程与线程的概念、区别和联系

    一.进程的的概念 引用线程之前进程的概念: 进程是表示资源分配的基本单位,也是调度运行的基本单位.例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括内存空间.磁盘空间.I/O设备等.然 ...

  6. JQ 动态修改/替换某个节点的内容

     <div class="box">我们定位于中国心理行业第一<div> $(".box").html($(".box&quo ...

  7. [转]Java 的强引用、弱引用、软引用、虚引用

    1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.如下: Object o=new Object(); // 强引用 当内存空间 ...

  8. 如何设置C-Lodop打印控件的端口

    Lodop是一款功能强大的打印控件,在一些浏览器不再支持np插件之后,Lodop公司又推出了C-Lodop,C-Lodop是以服务的方式解决web打印,摆脱了对浏览器的依赖,支持了所有的浏览器. 该控 ...

  9. 工厂类,配置文件,静态方法,反射构成编译器解耦;ioc的一个概念 ;通过xml创建容器里面存储对象

    工厂类,配置文件,静态,反射方法构成编译器解耦;ioc的一个概念

  10. luogu1503

    P1503 鬼子进村 题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. ...