2017多校第10场第8题(树上边匹配)
来源:互联网 发布:画图软件有哪些 编辑:程序博客网 时间:2024/06/06 04:02
一开始想到了二分图匹配,找出最大匹配以后如果还有猴子剩下,答案就是匹配数加剩下的猴子数。
后来写完就觉得匈牙利复杂度不够,瞎交了一发 tle了
后来知道了dfs的暴力匹配,创建一个0点,和1 相连,然后跑dfs,见到一条边,两个点都没有被选的话就选。
dfs以后如果0被选了 匹配数就减1,然后算答案
#include<cstdio>#include<vector>#include<cstring>using namespace std;const int maxn = 100000+10;int n,k,a;vector<int>G[maxn];int vis[maxn];int in[maxn];int used[maxn];int ans ;namespace fastIO { #define BUF_SIZE 100000 //fread -> read bool IOerror = 0; inline char nc() { static char buf[BUF_SIZE], *p1 = buf + BUF_SIZE, *pend = buf + BUF_SIZE; if(p1 == pend) { p1 = buf; pend = buf + fread(buf, 1, BUF_SIZE, stdin); if(pend == p1) { IOerror = 1; return -1; } } return *p1++; } inline bool blank(char ch) { return ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t'; } inline void read(int &x) { char ch; while(blank(ch = nc())); if(IOerror) return; for(x = ch - '0'; (ch = nc()) >= '0' && ch <= '9'; x = x * 10 + ch - '0'); } #undef BUF_SIZE};using namespace fastIO;void dfs(int u,int fa){ int len = G[u].size(); for(int i=0;i<len;i++) { int v = G[u][i]; dfs(v,u); } if(!vis[u]&&!vis[fa]) { ans ++; vis[u] = 1; vis[fa] = 1; }}int main(){ int cases; read(cases); while(cases--) { read(n); read(k); for(int i=0;i<=n;i++) G[i].clear(); ans = 0; for(int i=2;i<=n;i++) { read(a); G[a].push_back(i); } G[0].push_back(1); memset(vis,0,sizeof(vis)); dfs(1,-1); if(vis[0]) ans--; if(ans*2>=k) printf("%d\n",(k+1)/2); else printf("%d\n",ans+(k-2*ans)); } return 0;}//7 7//1 2 6 6 2 4
阅读全文
0 0
- 2017多校第10场第8题(树上边匹配)
- 2017多校第9场第5题
- hdu5723(16多校第1场,树上两点平均距离的期望)
- HDUOJ 4681 2013多校第8场第6题 String
- 2013多校第10场第9题--HDU4704
- 树上删边游戏(树上博弈)
- jzoj 4890. 【NOIP2016提高A组集训第14场11.12】随机游走 树上期望dp
- HDU 6178 Monkeys(树上的二分匹配+fread)
- 第10题 正则表达式匹配(动态规划)
- 2013多校 第10场
- 2017多校联合第8场1008/hdu 6140Hybrid Crystals(思维)
- 2017多校训练第10场-Schedule(贪心+二分)
- 【总结】10月训练赛第5场(8中)
- 【总结】10月训练赛第8场
- HDU 5384 Danganronpa (2015年多校比赛第8场)
- HDU 5386 Cover (2015年多校比赛第8场)
- 【总结】10月训练赛第2场(巴蜀)
- 练习场ACM 第1036题(非洲小孩)
- 程序员的5年奋斗历程与规划
- python --- paramiko模块
- android开发之Toast
- ORA-04091错误解决
- webpack2+angular2 按需加载,优化首屏速度
- 2017多校第10场第8题(树上边匹配)
- 监听器(Listener)
- My Oracle Note
- [乱搞]Hdu 6147——Pokémon GO II
- 算法系列——扑克牌的顺子
- 基于 Mathematica 的机器人仿真环境(机械臂篇)
- beamer模版
- ES6 class与ES5 function区别及联系
- 线程安全、非线程安全,同步、异步