AKOJ-2010-魔法石
链接:https://oj.ahstu.cc/JudgeOnline/problem.php?id=2010
题意:
Vyoung最近收集到一大批魔法石,这些魔法石有两种特性,攻击和防守,不同特性的两个魔法石可以组合在一起形成威力巨大的武器(正确的组合),现在给你m对魔法石,检查其中有多少对与之前的组合矛盾,即组合错误的魔法石
注意组合错误即是:相同特性的魔法石是一个组合,或者自己与自己组合
思路:
带权并查集,才学的成果。
Rank数组保存i与Father[i]的关系。因为只有两种,所以用0表示同种,1表示不同种。
同理,找父亲的时候更新Rank数组。因为每个位置与父节点肯定是不同,所以初始为1。
每个点与父节点的关系,加上父节点与根节点的关系,mod2,即为每个点与根节点的关系。
而合并连个集合时。因为两个点的关系肯定为1,所以找到每个点与父节点的关系即可。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include <iostream> #include <memory.h> #include <string> #include <istream> #include <sstream> #include <vector> #include <stack> #include <algorithm> #include <map> #include <queue> #include <math.h> using namespace std; const int MAXN = 50000+10; int Father[MAXN],Rank[MAXN]; int n,m; void Init() { for ( int i = 1;i<=n;i++) { Father[i] = i; Rank[i] = 0; } } int Get_F( int x) { if (Father[x] == x) return x; int tmp = Father[x]; Father[x] = Get_F(Father[x]); Rank[x] = (Rank[x] + Rank[tmp])%2; //当前点与根节点的关系为当前点与父节点和父节点与根节点 return Father[x]; } void Union( int l, int r) { int fl = Get_F(l); int fr = Get_F(r); Father[fr] = fl; Rank[fr] = (Rank[l] + 1 + Rank[r])%2; } int main() { int t; int cnt = 0,sum; int l,r; scanf ( "%d" ,&t); while (t--) { sum = 0; scanf ( "%d%d" ,&n,&m); Init(); for ( int i = 1;i<=m;i++) { scanf ( "%d%d" ,&l,&r); int fl = Get_F(l); int fr = Get_F(r); if (fl == fr && Rank[l] == Rank[r]) sum++; else Union(l,r); } printf ( "Case #%d: %d\n" ,++cnt,sum); } return 0; } |
分类:
菜鸡刷题笔记-AKOJ
, 菜鸡刷题笔记-并查集
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· Tinyfox 简易教程-1:Hello World!