从一道腾讯笔试编程题看——并查集
题目描述
现有个用户,编号问1-,现在已知有m对关系,每一对关系给你两个数x和y,代表编号为x的用户和编号为y的用户是在一个圈子中,例如:A和B在一个圈子中,B和C在一个圈子中,那么A,B,C就在一个圈子中。现在想知道最多的一个圈子内有多少个用户。
输入描述
第一行输入一个整数T,接下来有T组测试数据。对于每一组测试数据:第一行输入1个整数n,代表有n对关系。
接下来n行,每一行输入两个数x和y,代表编号为x和编号为y的用户在同一个圈子里。
1 n
1 x,y
输出描述
对于每一组数据,输出一个答案代表一个圈子内的最多人数。
示例
输入
2
4
1 2
3 4
5 6
1 6
4
1 2
3 4
5 6
7 8
输出
4
2
分析
超有爱的并查集~: https://blog.csdn.net/niushuai666/article/details/6662911
并查集的使用和优化:https://www.cnblogs.com/MS903/p/11244273.html
参考代码
#include <iostream>
#include <cstdio>
#include <cmath>using namespace std;int const maxn=1e7+50;
int T,M,x,y;
int fa[maxn];
int cnt[maxn];void init()
{for(int i=1; i<=1e7; i++){fa[i]=i;cnt[i]=1;}
}int findf(int x)
{if(fa[x]!=x){return fa[x]=findf(fa[x]);}elsereturn x;
}int main()
{scanf("%d",&T);while(T--){init();scanf("%d",&M);int res=1;while(M--){scanf("%d%d",&x,&y);int m=findf(x);int n=findf(y);if(m!=n){fa[m]=n;cnt[n]+=cnt[m];res=max(res,cnt[n]);}}printf("%d\n",res);}return 0;
}
从一道腾讯笔试编程题看——并查集相关推荐
- 华为2020校招笔试编程题 看这篇就够了(上)
背景 近日一位在华为的师兄整理了一份内部的提纲给我们,想着以后肯定不会去华为,于是乎分享给大家,看看菊花厂今年的笔试题目是什么样子的. 编程题范围 这好像来自一个华为内部的文档,据说今年华为内部也在进 ...
- Python——腾讯笔试编程题(函数练习)
题目需求: 对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如: f(13) = 1的2次方 + 3的2次方 = 10 f(207) = 2的2次方+ 0的2次方+ 7的2次方= 53 下 ...
- 腾讯笔试编程题,贪吃的小Q(二分查找)
问题描述 小Q的父母要出差N天,走之前给小Q留下了M块巧克力.小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力. 输入描 ...
- 某知名IT公司最近的一道笔试编程题
某知名IT公司最近的一道笔试编程题 因为笔试时答应对题目保密,故在此就不说出公司名了.欢迎交流,共同探讨. 一 问题描述 给定任一字符串(可以有中文),长度为任意,要求找出其出现 ...
- python算法预测风险等级_一般算法水平到底什么样子才能秒杀Bat的笔试编程题?...
很简单,打开 LintCode 随便找一道中等难度的题,如果能很快找到思路并提交代码通过,那么BAT公司的笔试编程题基本没什么问题了.(唯一需要注意的是国内公司笔试题目一般都很长,比较考验阅读理解能力 ...
- 经典笔试编程题--Java实现
转载自 经典笔试编程题--Java实现 1.输入一个正数n,输出所有和为n的连续正数序列. 分析:设定两个指针,min指向和为n的连续正数序列的最小值,max指向和为n的连续正数序列最大值.sum ...
- 【面经】外企德科-华为精英研发项目-笔试编程题
微信搜索:编程笔记本.获取更多干货! 微信搜索:编程笔记本.获取更多干货! 点击上方蓝字关注我,我们一起学编程 欢迎小伙伴们分享.转载.私信.赞赏 今天来看一道"外企德科-华为精英研发项目& ...
- 网易笔试编程题java_2017年网易校招笔试JAVA研发编程题
为什么80%的码农都做不了架构师?>>> 尝试挑战了下网易2017校招的笔试编程题,共三题,AC第一题,第二题思考了很久勉强用一种low逼的方式完成,第三题没有完成,希望路过的ACM ...
- 美团点评2017秋招笔试编程题
美团点评2017秋招笔试编程题 1, 大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步.求玩家走到第n步(n<=骰子最大点数且是 ...
最新文章
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- CSS基础(part18)--溢出的文字省略号显示
- 如何使用CSS实现居中
- java 数据库操作教程_java操作数据库的基本方法
- zabbix api python使用
- linux中screen 命令简单使用
- java是如何调用native方法?hotspot源码分析必会技能
- 数据中心服务器巡检方案,数据中心巡检机器人方案.pdf
- instagram下载_Instagram Raider可让您轻松下载Instagram图像和视频
- 【STM32F429的DSP教程】第1章 初学数字信号处理准备工作
- 河南省第二届“金盾信安杯”网络安全大赛 WriteUp Crypto+Misc
- 用C++计算圆周长和面积
- Apache POI(Word)教程_编程入门自学教程_菜鸟教程-免费教程分享
- 双臂魔方机器人的学习
- 三国志战略版:萌新手册系列_总结
- 招商银行信用卡中心笔试
- Zuul网关拦截器配置
- 如何配置和测试ChatBot
- linux服务器监控工具
- 五个Google Play应用程序的有效ASO优化策略