[BZOJ1854][Scoi2010]游戏(二分图匹配/并查集)
2015-03-07 22:45
316 查看
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1854
分析:很裸的一道二分图匹配对吧,但是在hzwer的blog上看见神奇的并查集做法!
其实这题和bzoj1191惊人的相似!
把权值当作点,装备当作边,既然一个装备只能选择一个属性,也就是你要人为给边定向,箭头指到的点就表示你这个装备选的属性。
然后就和bzoj1191一样的了
如果一个集合里的点构成一个树,那么很显然,把那个权值最大的点作为根,除了根节点以外的点都可以选出,如果一个集合里有环,那么这个集合里所有节点都能选出
我们弄一个并查集
假设读入边(x,y)
如果find(x)==find(y),则find(x)可以被选出,p[find(x)]=1
如果find(x)!=find(y),合并它们,因为多加入了一条边,则权值小的那个根就也可以被选出啦!p[min(find(x),find(y))]=1
最后的结果的话,从1扫一遍,看看是不是都能表示,知道断在哪个地方,就输出那里
分析:很裸的一道二分图匹配对吧,但是在hzwer的blog上看见神奇的并查集做法!
其实这题和bzoj1191惊人的相似!
把权值当作点,装备当作边,既然一个装备只能选择一个属性,也就是你要人为给边定向,箭头指到的点就表示你这个装备选的属性。
然后就和bzoj1191一样的了
如果一个集合里的点构成一个树,那么很显然,把那个权值最大的点作为根,除了根节点以外的点都可以选出,如果一个集合里有环,那么这个集合里所有节点都能选出
我们弄一个并查集
假设读入边(x,y)
如果find(x)==find(y),则find(x)可以被选出,p[find(x)]=1
如果find(x)!=find(y),合并它们,因为多加入了一条边,则权值小的那个根就也可以被选出啦!p[min(find(x),find(y))]=1
最后的结果的话,从1扫一遍,看看是不是都能表示,知道断在哪个地方,就输出那里
相关文章推荐
- BZOJ 1854: [Scoi2010]游戏 [连通分量 | 并查集 | 二分图匹配]
- BZOJ 1854 [Scoi2010] 游戏 题解与分析
- bzoj1854 [Scoi2010]游戏
- bzoj 1854: [Scoi2010]游戏(二分图的最大匹配)
- BZOJ1854: [Scoi2010]游戏
- 【bzoj 1854】[Scoi2010]游戏(匈牙利算法)
- BZOJ 1854 [Scoi2010]游戏——二分图匹配
- ●BZOJ 1854 [Scoi2010]游戏
- bzoj 1854: [Scoi2010]游戏(并查集)
- [BZOJ]1854 [SCOI]2010 游戏
- 【bzoj1854】[Scoi2010]游戏
- [BZOJ1854][SCOI2010]游戏 二分图最大匹
- AC日记——[SCOI2010]游戏 bzoj 1854
- BZOJ 1854 【SCOI2010】 游戏
- [bzoj1854][Scoi2010]游戏
- bzoj1854 [Scoi2010]游戏 二分图匹配 并查集
- 【bzoj 1854】[Scoi2010]游戏 二分图匹配
- bzoj1854 [Scoi2010]游戏
- BZOJ 1854 SCOI 2010 游戏 二分图最大匹配
- [BZOJ 1854][SCOI 2010]游戏(二分图最大匹配)