T^T OJ 2144 并查集( 并查集... )
**链接:****传送门 **
思路:增加num[] 记录集合中的个数,maxx[] 记录集合中最大值,挺不错的并查集练习题,主要是 unite 函数里如何改变一些东西,挺好的题,能用C尽量不用C++,效率差蛮大的!
/*************************************************************************
    > File Name: tat2144.cpp
    > Author:    WArobot
    > Blog:      http://www.cnblogs.com/WArobot/
    > Created Time: 2017年05月08日 星期一 18时51分08秒
 ************************************************************************/
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
int n,m;
int par[maxn] , num[maxn] , maxx[maxn];
char op[10];
void init(int n){
	for(int i=0;i<=n;i++){
		par[i]  = i;
		num[i]  = 1;
		maxx[i] = i;
	}
}
int find(int x){
	int p , tmp;
	p = x;
	while( x!=par[x] )
		x = par[x];
	while( p!=x ){
		tmp = par[p];
		par[p] = x;
		p = tmp;
	}
	return x;
}
int same(int x,int y){
	return find(x) == find(y) ;
}
void unite(int x,int y){
	int fx = find(x) , fy = find(y);
	if( fx == fy )	return;
	else{
		par[fy] = fx;
		num[fx] += num[fy];
		maxx[fx] = max( maxx[fx] , maxx[fy] );
	}
}
int main(){
	while(~scanf("%d%d",&n,&m)){
		init(n);
		int x , y , set_num = n;
		while(m--){
			getchar();
			scanf("%s",op);
			if( op[0] == 'u'){
				scanf("%d%d",&x,&y);
				if( find(x)!=find(y) ){
					unite(x,y);
					set_num--;
				}
			}
			else if( op[0]=='s' && op[1]=='a'){
				scanf("%d%d",&x,&y);
				if( same(x,y) )	puts("1");
				else			puts("0");
			}
			else if( op[0]=='n' ){
				scanf("%d",&x);
				printf("%d\n",num[ find(x) ]);
			}
			else if( op[0] == 'm' ){
				scanf("%d",&x);
				printf("%d\n",maxx[ find(x) ]);
			}
			else{
				printf("%d\n",set_num);
			}
		}
	}
	return 0;
}T^T OJ 2144 并查集( 并查集... )的更多相关文章
- HDU 3038 How Many Answers Are Wrong (并查集)---并查集看不出来系列-1
		Problem Description TT and FF are ... friends. Uh... very very good friends -________-bFF is a bad b ... 
- docker 快速部署ES集群  spark集群
		1) 拉下来 ES集群 spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库. 2)弄清楚怎么样打包 linux镜像(或者说制作). 3)试着改一下,让它们跑在集群里面. 4) ... 
- Mongodb主从复制 及 副本集+分片集群梳理
		转载努力哥原文,原文连接https://www.cnblogs.com/nulige/p/7613721.html 介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 ... 
- Mongodb分布式集群副本集+分片
		目录 简介 1. 副本集 1.1 MongoDB选举的原理 1.2 复制过程 2. 分片技术 2.1 角色 2.2 分片的片键 2.3 片键分类 环境介绍 1.获取软件包 2.创建路由.配置.分片等的 ... 
- 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)
		原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自 ... 
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(六)Picker View视图 学习笔记
		想对PickerView进行操作,只能在代码中操作. 下面 ,再添加三个label组件,然后将所有组件配置到代码中(看代码),然后要实现对PickerView的操作,就要实现它的DataSource协 ... 
- SICP 解题集 — SICP 解题集
		SICP 解题集 — SICP 解题集 SICP 解题集¶ 这个文档的目标是成为中文化的.完整的<计算机程序的构造和解释>一书的解题集. 这个解题集的特色是: 对于每道习题,除了习题答案之 ... 
- Mongodb副本集+分片集群环境部署记录
		前面详细介绍了mongodb的副本集和分片的原理,这里就不赘述了.下面记录Mongodb副本集+分片集群环境部署过程: MongoDB Sharding Cluster,需要三种角色: Shard S ... 
- Hadoop集群-HDFS集群中大数据运维常用的命令总结
		Hadoop集群-HDFS集群中大数据运维常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客会简单涉及到滚动编辑,融合镜像文件,目录的空间配额等运维操作简介.话 ... 
- mongodb副本集加分片集群安全认证使用账号密码登录
		mongodb副本集加分片集群搭建网上资料有很多.粘贴一个写的比较好的.副本集加分片搭建 对于搭建好的mongodb副本集加分片集群,为了安全,启动安全认证,使用账号密码登录. 默认的mongodb是 ... 
随机推荐
- 【BZOJ2733】【HNOI2012】永无乡 - 线段树合并
			题意: Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通 ... 
- vue 配置页面动态的 title
- 喵哈哈村的魔法考试 Round #3 (Div.2)
			菜的抠脚 A 题解:判断能否构成一个三角形. #include "iostream" #include "algorithm" #include "c ... 
- mysql数据库增量恢复
			mysqldump -uroot -p -B discuzx -F -x --master-data=2 --events|gzip >/root/discuzx.sql.gz 写入数据 删除数 ... 
- 使用gson进行数据(集合数据)的转换   并且返回给前端   进行动态解析 并添加
			后台使用gson转换工具把list集合数据 以json字符串的方式返回给前台 解压: 加入到工程中 前台页面进行数据解析时 需要把得到的字符串 转换为object数组 -------------- ... 
- Elasticsearch 7.0 正式发布,盘他!
			Elastic{ON}北京分享了Elasticsearch7.0在Speed,Scale,Relevance等方面的很多新特性. 比快更快,有传说中的那么牛逼吗?盘他! 通过本文,你能了解到: Ela ... 
- 如何利用eclipse实现批量修改文件的编码方式
			在eclipse+Eclipse环境下,打开一个jsp文件,经常发现汉字无法显示,右键点击查看这个文件属性,发现文件的字符编码属性为ISO-8859-1. 目前的解决方法有:1. 手工把 ... 
- L - 还是畅通工程
			L - 还是畅通工程 思路:水! #include<cstdio> #include<cstring> #include<iostream> #include& ... 
- HDU 1113 Word Amalgamation (map 容器 + string容器)
			http://acm.hdu.edu.cn/showproblem.php?pid=1113 Problem Description In millions of newspapers across ... 
- Android开发之大位图压缩水印处理
			我们在发微博或者csdn博文的时候都能够给图片加上一个水印.一个独立的标识,那是怎么实现的呢?先封装一个BitmapTools封装类.该类要解决的问题是一将突破存储至sdcard中,二给图片加上水印. ... 
