Description

企鹅国的网吧们之间由网线互相连接,形成一棵树的结构。现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料。但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把这K只企鹅安排到不同的机房(两只企鹅在同一个机房会吵架),然后拆掉一些网线,但是需要保证每只企鹅至少还能通过留下来的网线和至少另一只企鹅联机游戏。

所以他们想知道,最少需要保留多少根网线?

 

Input

第一行一个整数T,表示数据组数;

每组数据第一行两个整数N,K,表示总共的机房数目和企鹅数目。

第二行N-1个整数,第i个整数Ai表示机房i+1和机房Ai有一根网线连接(1≤Ai≤i)。

 

Output

每组数据输出一个整数表示最少保留的网线数目。

Solutions

最优的情况一定是一条边匹配两个点,在多一个点对答案的贡献只有一。

贪心的想,就是一条边两个点的尽量多。

这图显然是一颗树,从下往上匹配即可,因为子节点只有唯一的父节点,而父节点却有多个子节点。

代码

 1 var
 2   TT,n,k,nm,ans:longint;
 3   fa,next,ls:array [0..100001] of longint;
 4   bo:array [0..100001] of boolean;
 5 procedure add(x,y:longint);
 6 begin
 7   inc(nm);
 8   fa[nm]:=y; next[nm]:=ls[x];
 9   ls[x]:=nm;
10 end;
11
12 procedure init;
13 var
14   i,x:longint;
15 begin
16   readln(n,k);
17   fillchar(ls,sizeof(ls),0);
18   fillchar(bo,sizeof(bo),true);
19   nm:=0; ans:=0;
20   for i:=2 to n do
21     begin
22       read(x);
23       add(x,i);
24     end;
25 end;
26
27 procedure dfs(x,y:longint);
28 var
29   i:longint;
30 begin
31   i:=ls[x];
32   while i<>0 do
33     begin
34       if fa[i]<>y then
35         begin
36           dfs(fa[i],x);
37           if (bo[x]) and (bo[fa[i]]) then
38             begin
39               bo[x]:=false;
40               inc(ans);
41             end;
42         end;
43       i:=next[i];
44     end;
45 end;
46
47 begin
48   assign(input,'tree.in');
49   assign(output,'tree.out');
50   reset(input);
51   rewrite(output);
52   readln(TT);
53   while TT>0 do
54     begin
55       init;
56       dfs(1,0);
57       if ans*2>k then writeln(k div 2+k mod 2)
58                  else writeln(ans+(k-ans*2));
59       dec(TT);
60     end;
61   close(input);
62   close(output);
63 end.

jzoj_5455. 【NOIP2017提高A组冲刺11.6】拆网线相关推荐

  1. JZOJ 5441. 【NOIP2017提高A组冲刺11.1】序列

    Description 给定一个1~n的排列x,每次你可以将x1~xi翻转.你需要求出将序列变为升序的最小操作次数.有多组数据. Input 第一行一个整数t表示数据组数. 每组数据第一行一个整数n, ...

  2. [JZOJ5459]【NOIP2017提高A组冲刺11.7】密室

    Description 小X 正困在一个密室里,他希望尽快逃出密室. 密室中有N 个房间,初始时,小X 在1 号房间,而出口在N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会 ...

  3. JZOJ 5458. 【NOIP2017提高A组冲刺11.7】质数

    Description 小X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小X 认为,质数是一切自然数起源的地方. 在小X 的认知里,质数是除了本身和1 以外,没有其他因数的数 ...

  4. JZOJ 5455. 【NOIP2017提高A组冲刺11.6】拆网线

    Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...

  5. JZOJ 5445. 【NOIP2017提高A组冲刺11.2】失格

    Description 胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤. --太宰治<人间失格> 回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i. 我想用n-1条线把 ...

  6. JZOJ5445. 【NOIP2017提高A组冲刺11.2】失格

    Description 胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤. --太宰治<人间失格> 回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i. 我想用n-1条线把 ...

  7. JZOJ 5466. 【NOIP2017提高A组冲刺11.9】玩游戏

    Description 小A得了忧郁综合症,小B正在想办法开导她. 机智的小B决定陪着小A玩游戏,他从魔法的世界里变出一张无向联通图,每条边上都有边权.小B定义一条路径的权值为所有经过边中的最大权值, ...

  8. JZOJ 5462. 【NOIP2017提高A组冲刺11.8】好文章

    Description nodgd写了一篇文章,自认为这是一篇好文章.nodgd的文章由n个小写英文字母组成.文章的一个子串指的是文章中的一段连续的字母,子串的长度就是这一段的字母个数.nodgd在文 ...

  9. JZOJ 5463. 【NOIP2017提高A组冲刺11.8】证书

    Description Pulumi生活在P城的角落,而他的朋友们gjdy,oyski,tutuwai等等生活在P城的靠中心位置. P城很大,但它拥有优秀的城市结构,同时P城重视文化教育的发展,P城共 ...

最新文章

  1. 如何看待机器视觉的“对抗样本”问题,其原理是什么?
  2. 聊聊数据挖掘竞赛中的套路与深度学习的局限
  3. Python3.x和Python2.x的区别
  4. (转)Cairngorm初学者入门教程 第四节--通过 Model Locator 控制管理 Views
  5. SQL2005 数据库数据同步
  6. QT-Creator+SDK+编译器+自定义配置
  7. javaScript第三天(1)
  8. Java 11:JOIN表,获取Java流
  9. comsol分析时总位移代表什么_超弹性材料模型的压缩分析
  10. freemarker html 引入script_HTML编码规范
  11. 怎样在linux系统上安装r,Linux系统之路——如何在CentOS7.2安装R(示例代码)
  12. 苹果发布第四财季财报 iPhone 13上市初期表现如何将见分晓
  13. java中list方法addall怎么写_简历中个人优势怎么写?| 四大方法教你打造独一无二“个人标签”...
  14. 爱奇艺发布新款电视果,AI 语音控制,4G、WiFi 双模式投屏!
  15. Android自定义ScrollBar,android自定义View之垂直的滚动条
  16. excel去重怎么操作_EXCEL根据进货、出货求库存怎么操作
  17. NOIP2015 口胡题解
  18. 从小玩到大的铁哥们突然跟我表白,该怎么面对?
  19. pbl和sbl_ROKSO、SBL、XBL、PBL、DBL 是什么意思?
  20. ZLIB 压缩的数据格式规范

热门文章

  1. STC学习:可变调的蜂鸣器
  2. 批量解决win10程序以及文件夹图标上有两个蓝色箭头的方法
  3. 公务员备考(九) 行测 资料分析
  4. 大咖说|三人行:零碳经济如何实现,专家这样说
  5. C++ signal和sigaction信号处理
  6. enfuzion与lsf构建渲染集群_影视后期制作一般用什么软件?AE/PR/C4D/3dsMax/MAYA
  7. 计算机科学导论课程总结,计算机科学导论第一节课课后总结
  8. 毕业设计 stm32单片机便携体检仪(源码+硬件+论文)
  9. GPS天宝trimble原始文件转换RINEX
  10. 操作系统——Python:生产者——消费者