传染病控制

思路:

  题目想问的是:

    有一棵树;

    对于除1外每个深度可以剪掉一棵子树;

    问最后剩下多少节点;

  题目意思一简单,这个题立马就变水了;

  搜索就能ac;

  数据有为链的情况,按深度为层次搜索的话要记得提前记录答案并return;

来,上代码:

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. #define maxn 305
  9. #define maxm 90005
  10. #define INF 0x7fffffff
  11.  
  12. int n,m,head[maxn],E[maxm],V[maxm],cnt,ans=INF,dep[maxn];
  13. int l[maxn],r[maxn],size[maxn],map[maxn][maxn],deepest;
  14.  
  15. bool if_[maxn];
  16.  
  17. inline void in(int &now)
  18. {
  19. char Cget=getchar();now=;
  20. while(Cget>''||Cget<'') Cget=getchar();
  21. while(Cget>=''&&Cget<='')
  22. {
  23. now=now*+Cget-'';
  24. Cget=getchar();
  25. }
  26. }
  27.  
  28. inline void edge_add(int u,int v)
  29. {
  30. E[++cnt]=head[u],V[cnt]=v,head[u]=cnt;
  31. E[++cnt]=head[v],V[cnt]=u,head[v]=cnt;
  32. }
  33.  
  34. void pre(int now,int fa,int deep)
  35. {
  36. deepest=max(deep,deepest),dep[now]=deep;
  37. map[deep][++size[deep]]=now,l[now]=++cnt;
  38. for(int i=head[now];i;i=E[i])
  39. {
  40. if(V[i]==fa) continue;
  41. pre(V[i],now,deep+);
  42. }
  43. r[now]=cnt;
  44. }
  45.  
  46. void dfs(int now,int ans_)
  47. {
  48. if(ans_>=ans) return ;
  49. if(now==deepest)
  50. {
  51. ans=ans_;
  52. return ;
  53. }
  54. int pos=-;
  55. for(int i=;i<=size[now+];i++) if(!if_[l[map[now+][i]]]) pos++;
  56. if(pos==-)
  57. {
  58. ans=min(ans,ans_);
  59. return ;
  60. }
  61. for(int v=;v<=size[now];v++)
  62. {
  63. if(if_[l[map[now][v]]]) continue;
  64. for(int i=head[map[now][v]];i;i=E[i])
  65. {
  66. if(dep[V[i]]>dep[now]&&!if_[l[V[i]]])
  67. {
  68. for(int j=l[V[i]];j<=r[V[i]];j++) if_[j]=true;
  69. dfs(now+,ans_+pos);
  70. for(int j=l[V[i]];j<=r[V[i]];j++) if_[j]=false;
  71. }
  72. }
  73. }
  74. }
  75.  
  76. int main()
  77. {
  78. in(n),in(m);int u,v;
  79. while(m--)
  80. {
  81. in(u),in(v);
  82. edge_add(u,v);
  83. }
  84. cnt=,pre(,,),dfs(,);
  85. cout<<ans;
  86. return ;
  87. }

AC日记——传染病控制 洛谷 P1041的更多相关文章

  1. AC日记——最大数 洛谷 P1198 [JSOI2008]

    题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:L不超过当前数列的长度. 2. 插入操作 ...

  2. AC日记——中位数 洛谷 P1168

    题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], …, A[2k - 1]的中位数.[color=red]即[/color] ...

  3. AC日记——忠诚 洛谷 P1816

    题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...

  4. AC日记——独木桥 洛谷 p1007

    题目背景 战争已经进入到紧要时间.你是运输小队长,正在率领运输部队向前线运送物资.运输任务像做题一样的无聊.你希望找些刺激,于是命令你的士兵们到前方的一座独木桥上欣赏风景,而你留在桥下欣赏士兵们.士兵 ...

  5. AC日记——潜伏者 洛谷 P1071 (模拟)

    题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原 ...

  6. AC日记——机器翻译 洛谷 P1540

    题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...

  7. AC日记——统计和 洛谷 P2068

    统计和 思路: 水题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 int n,m,tree ...

  8. AC日记——送花 洛谷 P2073

    送花 思路: 线段树: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct TreeN ...

  9. AC日记——方差 洛谷 P1471

    方差 思路: 线段树: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct TreeN ...

随机推荐

  1. 2018 Multi-University Training Contest 1 H - RMQ Similar Sequence(HDU - 6305 笛卡尔树)

    题意: 对于一个序列a,构造一个序列b,使得两个序列,对于任意的区间 [l, r] 的区间最靠近左端点的那个最大值的位置,并且序列 b 满足 0 < bi < 1. 给定一个序列 a ,求 ...

  2. 使用HTTP协议访问网路

    使用HTTP协议访问网路 一.使用HttpURLConnection //new一个URL对象 URL url = new URL("http://www.qq.com");//千 ...

  3. MySQL之Schema与数据类型优化

    选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择: 更小的通常更好一般情况下,应该尽量使用 ...

  4. setTimeout相关整理

    setTimeout里面函数有无双引号的区别 双引号中的作用域不捕捉局部变量,不用双引号包着的是捕捉局部作用域 var a = function(){ alert(1111) } function a ...

  5. HTML textarea 无法修改 value 的问题

    当设置了  textarea  的 value 后,发现页面的输入框无法输入值, <textarea id="></textarea> 解决方法: 只需将值设置在  ...

  6. 【JSOI2008】星球大战 并查集

    题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系. 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧 ...

  7. 函数的apply、call方法和length属性

    函数的apply.call方法和length属性JavaScript为函数对象定义了两个方法:apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:Fu ...

  8. 谷歌插件请求ci 解决CI框架的Disallowed Key Characters错误提示

    用CI框架时,有时候会遇到这么一个问题,打开网页,只显示 Disallowed Key Characters 错误提示.有人说 url 里有非法字符.但是确定 url 是纯英文的,问题还是出来了.但清 ...

  9. POJ 3648 Wedding(2-SAT的模型运用+DFS | Tarjan)

    Wedding Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10427   Accepted: 3170   Specia ...

  10. [POJ1160] Post Office [四边形不等式dp]

    题面: 传送门 思路: dp方程实际上很好想 设$dp\left[i\right]\left[j\right]$表示前$j$个镇子设立$i$个邮局的最小花费 然后状态转移: $dp\left[i\ri ...