题目链接
并查集可以用于聚类。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;class Main {
int N = (int) (1e4 + 7);
int father[] = new int[N << 1];class FatherDis {int father;int dis;FatherDis(int father, int dis) {this.father = father;this.dis = dis;}@Overridepublic String toString() {return String.format("(father=%d,dis=%d)", father, dis);}
}FatherDis find(int x) {if (father[x] == x) {return new FatherDis(x, 0);}FatherDis f = find(father[x]);f.dis++;if ((f.dis & 1) == 0) {father[x] = f.father + N;} else {father[x] = f.father;}return f;
}Main() {Scanner cin = new Scanner(System.in); int t = cin.nextInt();while (t-- > 0) {int n = cin.nextInt(), m = cin.nextInt();for (int i = 1; i <= n; i++) father[i] = father[i + N] = i;int fail = -1;for (int i = 0; i < m; i++) {int x = cin.nextInt(), u = cin.nextInt(), v = cin.nextInt();if (fail != -1) continue;//读完数据再说FatherDis fu = find(u), fv = find(v);boolean sameLevel = (fu.dis & 1) == (fv.dis & 1);if (x == 0) {if (fu.father != fv.father) {if (sameLevel) {father[fu.father] = fv.father + N;} else {father[fu.father] = fv.father;}} else {if (!sameLevel) {//不同类别fail = i;}}} else {if (fu.father != fv.father) {if (sameLevel) {father[fu.father] = fv.father;} else {father[fu.father] = fv.father + N;}} else {if (sameLevel) {//同一类别fail = i;}}}}if (fail == -1) {System.out.println("great");} else {System.out.println("sad");System.out.println(fail + 1);}}
}public static void main(String[] args) {new Main();
}
}

hihocoder 1638:多级并查集相关推荐

  1. [hihoCoder]无间道之并查集

    题目大意: #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之, ...

  2. hihoCoder 无间道之并查集

    题目 题意:两种操作,一种是告诉它哪两个人是同一阵营的,而另一种是询问某两个人是不是同一阵营的,是:输出yes ,不是:输出:no. 这道题思路是并查集,但问题在于,如何把名字(是个字符串)合并? 一 ...

  3. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  4. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  5. HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法

    tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...

  6. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  7. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

  8. 【BZOJ1015】【JSOI2008】星球大战 并查集

    题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...

  9. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

最新文章

  1. php – Laravel 7 Session Lifetime
  2. 充分理解表达式——《狂人C》习题解答2(第二章习题5)
  3. 如何实现java虚拟机的优化_Java虚拟机JVM优化实战的过程全记录
  4. codetyphon, Lazarus+FreePascal+Tools+Free Components packages+Free Libraries
  5. Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中
  6. linux smb 所有者,python-3.x - 在Linux上使用python从smb共享中获取文件的所有者。 - SO中文参考 - www.soinside.com...
  7. Apache Nuvem将带来更多的开源云?
  8. FTP连接时出现“227 Entering Passive Mode”的解决方法
  9. SpringBoot:Spring boot 主程序的功能SpringApplication.run(启动流程)
  10. Sublime Text 2删除行尾空格
  11. Python 基础 —— sorted
  12. wireshark学习使用
  13. HDU 1358 (所有前缀中的周期串) Period
  14. 语法分析——自下而上
  15. 周期均方根和有效值的区别_何为有效值?何为均方根?
  16. 空气质量等级c语言编程,编程小白如何快速处理空气质量数据
  17. 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
  18. ubuntu 命令行批量重命名文件夹
  19. 隐藏在今日头条百亿市值背后的算法:巨大可能与现实困境
  20. 今天搞毕设了么?——3.29 audioread读取音频文件

热门文章

  1. 中国城市商业银行产业模式展望及布局规模前景分析报告2021-2027年
  2. 中国电梯行业动态调研与未来发展趋势展望报告2022-2028年版
  3. LeetCode第155题 最小栈
  4. POJ3481(待完善版本,请看注释)
  5. SQL Server 2008存储过程的加密
  6. [转]c++ new带括号和不带括号
  7. 让服务器iis支持.apk文件下载的设置方法
  8. ExtJs之自定义事件
  9. linux下获取线程号
  10. 产品问答 | 作为项目负责人,怎么提升成员工作斗志?