题意:给出一颗数,1结点代表司令部,叶子节点代表前线,边全值代表花费,然后需要在某些边放置一些炸弹,炸弹的能量不能小于该边的费用,且炸掉的总费用不能超过m问炸弹能力最小多少,

分析dfs+二分,二分枚举下限,费用小于mid的可以炸掉,不能通过,且没有点可以到达叶子节点

  1. #include"stdio.h"
  2. #include"string.h"
  3. #include"queue"
  4. #include"vector"
  5. #define M 10000
  6. #define inf 1000000
  7. using namespace std;
  8. int t,n,head[M],degree[M],dis[M],sum;
  9. struct node
  10. {
  11. int u,v,w,next;
  12. }edge[M*2];
  13. void init()
  14. {
  15. t=0;
  16. memset(head,-1,sizeof(head));
  17. }
  18. void add(int u,int v,int w)
  19. {
  20. edge[t].u=u;
  21. edge[t].v=v;
  22. edge[t].w=w;
  23. edge[t].next=head[u];
  24. head[u]=t++;
  25. }
  26. int dfs(int u,int f,int mid)
  27. {
  28. if(degree[u]==1&&u!=1)
  29. return 1;
  30. for(int i=head[u];~i;i=edge[i].next)
  31. {
  32. int v=edge[i].v;
  33. if(edge[i].w<=mid)
  34. sum+=edge[i].w;
  35. if(v==f||edge[i].w<=mid)continue;
  36.  
  37. if(dfs(v,u,mid))
  38. return 1;
  39. }
  40. return 0;
  41. }
  42. int main()
  43. {
  44. int m,i;
  45. while(scanf("%d%d",&n,&m),m||n)
  46. {
  47. init();
  48. memset(degree,0,sizeof(degree));
  49. for(i=1;i<n;i++)
  50. {
  51. int a,b,c;
  52. scanf("%d%d%d",&a,&b,&c);
  53. add(a,b,c);
  54. add(b,a,c);
  55. degree[a]++;
  56. degree[b]++;
  57. }
  58. int l=0,r=1000,mid,ans=-1;
  59. while(l<=r)
  60. {
  61. mid=(l+r)/2;
  62. sum=0;
  63. if(dfs(1,1,mid))
  64. {
  65. l=mid+1;
  66. }
  67. else
  68. {
  69. r=mid-1;
  70. if(sum<=m)
  71. ans=mid;
  72. }
  73. }
  74. printf("%d\n",ans);
  75. }
  76. return 0;
  77. }

树形DP+二分(Information Disturbing HDU3586)的更多相关文章

  1. 两种解法-树形dp+二分+单调队列(或RMQ)-hdu-4123-Bob’s Race

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4123 题目大意: 给一棵树,n个节点,每条边有个权值,从每个点i出发有个不经过自己走过的点的最远距离 ...

  2. [hdu3586]Information Disturbing树形dp+二分

    题意:给出一棵带权无向树,以及给定节点1,总约束为$m$,找出切断与所有叶子节点联系每条边所需要的最小价值约束. 解题关键:二分答案,转化为判定性问题,然后用树形dp验证答案即可. dp数组需要开到l ...

  3. HDU - 3586 Information Disturbing 树形dp二分答案

    HDU - 3586 Information Disturbing 题目大意:从敌人司令部(1号节点)到前线(叶子节点)的通信路径是一个树形结构,切断每条边的联系都需要花费w权值,现在需要你切断前线和 ...

  4. HDU 3586 Information Disturbing 树形DP+二分

    Information Disturbing Problem Description   In the battlefield , an effective way to defeat enemies ...

  5. hdu 3586 Information Disturbing(树形dp + 二分)

    本文出自   http://blog.csdn.net/shuangde800 题目链接:   hdu-3586 题意 给一棵n个节点的树,节点编号为1-n,根节点为1.每条边有权值,砍掉一条边要花费 ...

  6. BZOJ3420[POI2013]Triumphal arch&BZOJ5174[Jsoi2013]哈利波特与死亡圣器——树形DP+二分答案

    题目大意: 给一颗树,1号节点已经被染黑,其余是白的,两个人轮流操作,一开始B在1号节点,A选择k个点染黑,然后B走一步,如果B能走到A没染的节点则B胜,否则当A染完全部的点时,A胜.求能让A获胜的最 ...

  7. hdu 3586 树形dp+二分

    题目大意:给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵 树,每条边都有一个权值cost表示破坏这条边的费用,叶子节点为前线.现要切断前线和司令部的联系,每次切断边的费用不能超过上限lim ...

  8. 【BZOJ3872】[Poi2014]Ant colony 树形DP+二分

    [BZOJ3872][Poi2014]Ant colony Description 给定一棵有n个节点的树.在每个叶子节点,有g群蚂蚁要从外面进来,其中第i群有m[i]只蚂蚁.这些蚂蚁会相继进入树中, ...

  9. hdu3586 Information Disturbing 树形DP+二分

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3586 题目大意:给定n个敌方据点,编号1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值c ...

随机推荐

  1. 耦合 Coupling the object-oriented paradigm && data coupling

    Computer Science An Overview _J. Glenn Brookshear _11th Edition 耦 两个人一起耕地 one of the benefits of the ...

  2. sql server 数据库连接配置在外面 如何读取

    注意:web运行读取要把配置文件放在WEB-INF下面 Driver=com.microsoft.sqlserver.jdbc.SQLServerDriverurl=jdbc:sqlserver:// ...

  3. java 客户端获取真实ip地址

    在开发工作中,我们常常需要获取客户端的IP.一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...

  4. scala手动编译运行

    1  Person.scala class Person { var name = "" } object Person { // a one-arg constructor de ...

  5. 【Demo】 生成二维码 和 条形码

    条形码 和 二维码 对比 一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准. 在水平和垂直方向的二维空间存储信息的条形码, 称为 ...

  6. (转)web网站架构演变

    浅谈web网站架构演变过程   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管 ...

  7. (转)常用的js设计模式

    模式是解决或者避免一些问题的方案. 在JavaScript中,会用到一些常用的编码模式.下面就列出了一些常用的JavaScript编码模式,有的模式是为了解决特定的问题,有的则是帮助我们避免一些Jav ...

  8. 转一个 C#基础类库

    转自:http://www.cnblogs.com/sufei/archive/2012/12/07/2807170.html http://www.sufeinet.com/thread-655-1 ...

  9. Redis学习笔记(4)-List

    package cn.com; import java.util.List; import redis.clients.jedis.Jedis; import redis.clients.jedis. ...

  10. CDH商业版本的搭建(hadoop+hive+sqoop)

    一:准备工作 1.步骤 1)hadoop ->下载解压 ->修改配置文件 ->hadoop-env JAVA_HOME ->core-site fs.defaultFS had ...