题目传送门
解题思路

并查集入门题,大概意思就是求最大的集合有多少个人,并查集按照按照集合大小合并就可以。

坑点:题目给的数据范围有点大,小心一点不然会超内存或者超时间。记得做路径压缩,输入用scanf,cin会T到飞起,还有就是n = 0的时候,代表没有给定的两个朋友,说明只有他一个人,那么n = 0的时候最大集合就是 1 。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1e7+5;
int s[maxn];
int sum[maxn];
inline void clear_set()
{for(int i = 0;i < maxn;i++){s[i] = i;               //每个人的父节点最开始都指向自己 sum[i] = 1;              //每一个人都是一个单独的个体数 }
}
int find_set(int x)             //路径压缩
{int r = x;while(r != s[r]){r = s[r];}while(x != r){int t = s[x];s[x] = r;x = t; }return r;
}
int union_set(int x,int y)          //合并
{x = find_set(x);y = find_set(y);if(x == y){                        //同一个集合直接返回return sum[x];}else{         if(sum[x] < sum[y]){         //x集合的人数小于y集合人数sum[y] += sum[x];s[x] = y;return sum[y];}else{                            //x集合的人数大于y集合人数sum[x] += sum[y];s[y] = x;return sum[x];}}
}
int main()
{int n;while(~scanf("%d",&n)){clear_set();int ans = 1;for(int i = 1;i <= n;i++){int x,y;scanf("%d%d",&x,&y);ans = max(ans,union_set(x,y));}cout << ans << endl;}return 0;
}

愿你走出半生,归来仍是少年~

HDU1856(More is better)相关推荐

  1. ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》

    罗书<算法竞赛入门到进阶>题目一览 第1章 算法竞赛概述 HDU1000 HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)( ...

最新文章

  1. Haproxy Nginx cluster构建
  2. tomcat中server.xml文件详解
  3. 近100年来全球20家顶尖公司成功原因揭秘
  4. 跟着鸟哥学Linux系列笔记1
  5. 资讯|WebRTC M94 更新
  6. PyCairo 中的文本
  7. 利用lay-ui结合ajax实现分页功能(不借助框架,简单易懂)
  8. 禁止用户通过shell登录
  9. gcn语义分割_语义分割该如何走下去?
  10. java限流器_Smaphor(信号量)实现限流器
  11. 【数学、dp】bigcoin 2013广东省赛E题
  12. OSPF协议单域配置实例
  13. debug-programe
  14. 背单词App开发日记1
  15. 阿里P9大佬手写的Java核心开发手册(2022版)覆盖P5到P8所有技术栈
  16. vbs脚本和windows定时任务实现qq消息表情包定时发送
  17. sql 根据日期模糊查询SQL Server dateTime类型 模糊查询
  18. MATLAB3 二维和三维图像的绘制
  19. 【论文阅读第一期】Goods:Organizing Google’s Datasets总结
  20. 110配线架打法图解_配线架打线的方法以及110配线架的按照流程

热门文章

  1. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)J Just Another Game of Stones ——线段树区间更新小于x的数
  2. Linux SDIO WIFI Marvell8801/Marvell88w8801(五) --- Linux SDIO API介绍
  3. 三极管简介及其使用注意事项
  4. 半导体精密划片机行业介绍及市场分析
  5. 用CSS3写一个旋转魔方相册
  6. 补码一位乘法-一般乘法与Booth的证明与原理
  7. 传统分割方法汇总(包括SLIC、Ncut、watershed、graph-based segmentation、Meanshit、最大熵分割)
  8. Brendan Gregg
  9. 无线路由器的基础配置(三)
  10. 经典按键java手机游戏_各种免费手机游戏可以玩了!