其他分享
首页 > 其他分享> > 【每日总结】2021-2-2

【每日总结】2021-2-2

作者:互联网

【每日总结】2021-2-2

学习时间:7h
刷题数:1
学习内容:初步了解并查集
题目:B - 愚人节的礼物
这个题太水了,就不写总结了。
题目:A - 一张桌子到底坐了几个人!
544的100大寿马上就要来临了,现在他要举办一场宴席,邀请了各路来宾前来祝寿。无奈的是,544的退休金并不是很多,因此需要尽可能使得宴席的桌数少。

但是544的朋友们也很挑剔,他们不会跟陌生人坐在一起,但是却可以跟朋友的朋友坐在一起。

具体来说,如果A认识B,B认识C,C认识D,E认识F,那么A,B,C,D可以坐在一起,E和F可以坐在一起,这样安排的桌数是2。显然,E或F不能与A,B,C,D坐在一起。

由于544已经100岁了,脑袋不足以支持太过复杂的运算,所以他邀请了你来解决这个问题:给出544的朋友之间的认识关系,请问最少需要摆多少张桌子呢?
Input
输入以一个整数T开始 (1<=T<=25) 表示测试数据组数. 接下来是T个测试数据。 每个测试数据以两个整数N和M开始(1<=N,M<=1000). N表示朋友的数目,编号为1~N。接下来是M行,每行包含两个整数A和B(A!=B),表示A和B互相是朋友。每两组测试数据间以一个空行相隔。
Output
对于每组测试数据,输出一个整数,代表最少需要摆放的桌数。

思路

这里就要用到并查集的思想了,首先,我们需要一个数组pre[]来记录谁相互认识.首先需要将pre[]初始化。
初始化:假设每个人只认识自己。
在这里插入图片描述
然后若a认识b,就令pre[b]=a;
在这里插入图片描述
最后查找只认识自己的人的个数(需要桌子的数量)
在这里插入图片描述

但是!这样就时间超限了!!!

在这里插入图片描述
可能是因为这里需要路径压缩,
也有可能是因为我的某个循环存在错误,导致某一组数据出不了循环。

算了,明天再想,,,,,

标签:总结,pre,需要,认识,每日,2021,544,坐在,一起
来源: https://blog.csdn.net/m0_51777391/article/details/113575957