HDU 6178 Monkeys (贪心+输入挂)
来源:互联网 发布:java web服务器有哪些 编辑:程序博客网 时间:2024/06/06 05:54
Monkeys
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 153428/153428 K (Java/Others)Total Submission(s): 934 Accepted Submission(s): 311
Problem Description
There is a tree having N vertices. In the tree there are K monkeys (K <= N). A vertex can be occupied by at most one monkey. They want to remove some edges and leave minimum edges, but each monkey must be connected to at least one other monkey through the remaining edges.
Print the minimum possible number of remaining edges.
Print the minimum possible number of remaining edges.
Input
The first line contains an integer T (1 <= T <= 100), the number of test cases.
Each test case begins with a line containing two integers N and K (2 <= K <= N <= 100000). The second line contains N-1 space-separated integersa1,a2,…,aN−1 , it means that there is an edge between vertex ai and vertex i+1 (1 <= ai <= i).
Each test case begins with a line containing two integers N and K (2 <= K <= N <= 100000). The second line contains N-1 space-separated integers
Output
For each test case, print the minimum possible number of remaining edges.
Sample Input
24 41 2 34 31 1 1
Sample Output
22
Source
2017 Multi-University Training Contest - Team 10
给你一个图,让你删最多边,使得每只猴子都能找到另一只猴子。
POINT:
在树底开始找成对的点,找到就要,贪心。
再一个输入挂就不TLE了。用了这个就不能用scanf,害我wa了好久。浪费我时间
#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <vector>using namespace std;#define LL long longconst int maxn = 101000;int vis[maxn];int n,m;vector<int>G[maxn];int dui=0;#define FI(n) FastIO::read(n)namespace FastIO { const int SIZE = 1 << 16; char buf[SIZE], obuf[SIZE], str[60]; int bi = SIZE, bn = SIZE, opt; int read(char *s) { while (bn) { for (; bi < bn && buf[bi] <= ' '; bi++); if (bi < bn) break; bn = fread(buf, 1, SIZE, stdin); bi = 0; } int sn = 0; while (bn) { for (; bi < bn && buf[bi] > ' '; bi++) s[sn++] = buf[bi]; if (bi < bn) break; bn = fread(buf, 1, SIZE, stdin); bi = 0; } s[sn] = 0; return sn; } bool read(int& x) { int n = read(str), bf; if (!n) return 0; int i = 0; if (str[i] == '-') bf = -1, i++; else bf = 1; for (x = 0; i < n; i++) x = x * 10 + str[i] - '0'; if (bf < 0) x = -x; return 1; }};void dfs(int now,int pre){ for(int i=0;i<G[now].size();i++) { int v=G[now][i]; if(v==pre) continue; dfs(v,now); if(vis[v]==0&&vis[now]==0) { dui++; vis[v]=vis[now]=1; } }}void init(){ dui=0; memset(vis,0,sizeof vis); for(int i=1;i<=maxn;i++) { G[i].clear(); }}int main(){ int T; FI(T); while(T--) { init(); FI(n),FI(m); for(int i=2;i<=n;i++) { int a; FI(a); G[i].push_back(a); G[a].push_back(i); } dfs(1,-1); int ans; int now=2*dui; if(m<=now) { ans=m/2; if(m&1) ans++; } else { ans=dui+m-(dui*2); } printf("%d\n",ans); }}
阅读全文
0 0
- HDU 6178 Monkeys (贪心+输入挂)
- hdu 6178 Monkeys (贪心)
- hdu 6178 Monkeys 贪心
- HDU 6178 Monkeys【dfs】【输入外挂模板】
- 2017 Multi-University Training Contest 10 1008 Monkeys HDU 6178 (贪心 读入挂fread)
- 2017 Multi-University Training Contest 10 1008 Monkeys&& HDU 6178 (贪心+超级读入挂fread)
- 【多校训练】hdu 6178 Monkeys 贪心+dfs+读入挂模版
- Hdu 6178 Monkeys【树形Dp-最小点覆盖+贪心思维】
- hdu 6178 Monkeys
- HDU-6178 Monkeys
- hdu-6178-Monkeys(fast IO)
- hdu 6178 Monkeys dfs匹配
- hdu 6178 Monkeys (dfs+FastIO)
- 2017 Multi-University Training Contest 10 && HDU 6178 Monkeys 【贪心||树形DP】
- HDU 6178 && 2017 多校训练:Monkeys(DFS)
- HDU 6178 Monkeys(树上的二分匹配+fread)
- HDU 6178 Monkeys【DFS+输入输出外挂】
- HDU 6178 Monkeys(树上DP 17多校第十场)
- 别踩白块-用H5中的Canvas和JavaScript实现。
- 微服务架构秘籍
- vi命令归纳
- mybatis简单查询,resultType及resultMap查询使用
- 第一天
- HDU 6178 Monkeys (贪心+输入挂)
- ccf c++ 分蛋糕算法
- jsp自定义标签处理器类----带属性标签的做法
- Struts2配置入门案例
- model、dao、service、controller之间的关系,还有util和task的简介
- ConcurrentHashMap
- Unable to build: the file dx.jar was not loaded from the SDK folder!
- 条目侧滑删除效果
- 学习阶段总结(2)