HDU How Many Tables【并查集】
发布日期:2021-07-01 02:47:42
浏览次数:2
分类:技术文章
本文共 1870 字,大约阅读时间需要 6 分钟。
Problem Description
Today is Ignatius’ birthday. He invites a lot of friends. Now it’s dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each other, and all the friends do not want to stay with strangers.One important rule for this problem is that if I tell you A
knows B
, and B
knows C
, that means A
, B
, C
know each other, so they can stay in one table.
For example: If I tell you A
knows B
, B
knows C
, and D
knows E
, so A
, B
, C
can stay in one table, and D
, E
have to stay in the other one. So Ignatius needs 2 2 2 tables at least.
Input
The input starts with an integerT(1<=T<=25)
which indicate the number of test cases. Then T
test cases follow. Each test case starts with two integers N
and M(1<=N,M<=1000)
. N
indicates the number of friends, the friends are marked from 1
to N
. Then M
lines follow. Each line consists of two integers A
and B
( A
!= B
), that means friend A
and friend B
know each other. There will be a blank line between two cases. Output
For each test case, just output how many tables Ignatius needs at least. Do NOT print any blanks.Sample Input
25 31 22 34 55 12 5
Sample Output
24
题意:需要多少张桌子,容纳不同的朋友群体。
思路:并查集的板子题,朴素的写法就可以过。
代码:
#includeusing namespace std;vector father;int findSet(int x) { if (father[x] == x) return x; else return findSet(father[x]);}void unionSet(int r1, int r2) { father[r1] = r2;}int main() { int T; scanf("%d", &T); while (T--) { int n, m, a, b, tableNum = 0; scanf("%d%d", &n, &m); father.resize(n + 1); for (int i = 1; i <= n; ++i) father[i] = i; while (m--) { scanf("%d%d", &a, &b); int r1 = findSet(a), r2 = findSet(b); if (r1 != r2) unionSet(r1, r2); } for (int i = 1; i <= n; ++i) if (father[i] == i) ++tableNum; printf("%d\n", tableNum); father.clear(); } return 0;}
转载地址:https://memcpy0.blog.csdn.net/article/details/106628359 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月15日 15时15分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
c语言知识点补遗
2019-05-02
python开发总结五
2019-05-02
EL、JSTL、servlet
2019-05-02
2 QCreator调试并查看源码
2019-05-02
4 Qt 之 pro 配置多个子工程/子模块
2019-05-02
12 Qt 之 QToolBox、QLCDNumber
2019-05-02
32 Qt 之绘图之绘制一个漂亮的西瓜
2019-05-02
33 Qt 之绘图之绘制卡通蚂蚁
2019-05-02
35 Qt 之绘制闪烁文本
2019-05-02
QT知识点总结(一)
2019-05-02
Unix环境变量--文件操作
2019-05-02
Unix环境变量--进程管理
2019-05-02
Unix环境变量--线程基础
2019-05-02
tinyhttpd源码学习1
2019-05-02
Plus One
2019-05-02
Reverse Linked List II
2019-05-02
涨姿势:为啥MySQL官方不推荐使用uuid或者雪花id作为主键?
2019-05-02
一个小小的签到功能,到底用MySQL还是Redis?
2019-05-02
36岁退休!阿里 P8 六年实现“财务自由”,裸辞环游世界!
2019-05-02
QQ号终于能修改了?
2019-05-02