博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACM_并查集
阅读量:5265 次
发布时间:2019-06-14

本文共 794 字,大约阅读时间需要 2 分钟。

//题意:ignatius过生日,客人来到,他想知道他需要准备多少张桌子。然而一张桌子上面只能坐上相互熟悉的人,	//其中熟悉可定义成为A与B认识,B与C认识,我们就说A,B,C相互熟悉 。例如A与B熟悉and  B与C熟悉,D与E熟悉,此时至少需要两张桌子。//输入:t表示样例个数,n表示朋友个数,朋友从1到n编号,m表示已知相互了解的对数,接着m行。每行表示相互熟悉的编号//输出:至少需要准备的桌子个数//刚学并查集!简单的并查集模板应用。  #include 
using namespace std;int pre[1010];int find(int x){ int r = x; while (pre[r] != r) r = pre[r]; int i = x, j; while (i != r) { j = pre[i]; pre[i] = r; i = j; } return r;}int main(){ int n, m; int t; cin >> t; while (t --) { int total; cin >> n; for (int i = 1; i<=n; i++) pre[i] = i; total = n; cin >> m; int p1, p2, f1, f2; while (m --) { cin >> p1>> p2; f1 = find(p1); f2 = find(p2); if (f1 != f2) { pre[f2] = f1; total -- ; } } cout << total<< endl; } return 0;}

转载于:https://www.cnblogs.com/Tovi/p/6194852.html

你可能感兴趣的文章
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>
java易错题----静态方法的调用
查看>>
php建立MySQL数据表
查看>>
最简单的线程同步的例子
查看>>
结对编程总结 1175 1176
查看>>
内核链表使用--删除链表节点
查看>>
eclipse启动无响应,停留在Loading workbench状态
查看>>
How exactly does Google AdWords work?
查看>>
多线程系列(4)使用多线程的安全问题
查看>>
C# 你可能没这样用过(逗逼方式) return
查看>>
387. First Unique Character in a String
查看>>
JSP、Servlet乱码终极解决方案
查看>>
libcurl教程(转)
查看>>
旅途上看的电影和观后感
查看>>
SpringMVC 拦截器 异常
查看>>
C语言版的16进制与字符串互转函数
查看>>