博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1988
阅读量:5741 次
发布时间:2019-06-18

本文共 1063 字,大约阅读时间需要 3 分钟。

题目:M指的是将前一个箱子移动到后一个箱子上,C为询问在这个箱子下面的箱子有多少个?

这里sum指的是这个并查集中的元素的个数。rank为到根节点的距离(可以压缩更新),p为上一个根节点.

View Code
#include
#include
#include
#include
using namespace std; const int maxn=100005; int n,m; int p[maxn],rank[maxn],sum[maxn]; void init() {
for(int i=0;i<=30005;i++) {
p[i]=i; rank[i]=0; sum[i]=1; } } int find(int x) {
if(x==p[x]) return x; int t=find(p[x]); rank[x]=rank[x]+rank[p[x]]; p[x]=t; return t; } int main() {
int x,y;char str[3]; init(); scanf("%d",&n); while(n--) {
scanf("%s",str); if(str[0]=='M') {
scanf("%d%d",&x,&y); int tx=find(x); int ty=find(y); p[tx]=ty; rank[tx]+=sum[ty]; sum[ty]+=sum[tx]; } else if(str[0]=='C') {
scanf("%d",&x); find(x); printf("%d\n",rank[x]); } } return 0; }

转载于:https://www.cnblogs.com/xuschang-93/archive/2012/03/06/2382308.html

你可能感兴趣的文章
Centos7.2下安装VLC视频播放器
查看>>
实现基于LNMP的电子商务网站--小米商城
查看>>
结合Apache Kafka生态系统,谈谈2018年机器学习5大趋势
查看>>
shell 如何判断用户从键盘输入的变量是否为数字
查看>>
mysql sql 常用命令和函数
查看>>
一文看懂各种神经网络优化算法:从梯度下降到Adam方法
查看>>
如何让oracle DB、监听和oem开机启动(dbstart)
查看>>
AGG第五课 RGB颜色定义
查看>>
【云周刊】第160期:MWC2018-阿里云发布8款云计算AI产品,中国科技已领先世界一步...
查看>>
Another app is currently holding the yum lock; waiting for it to exit...
查看>>
PostgreSQL Master Slave升级过程
查看>>
页面字体颜色的设置及常用颜色的RGB值
查看>>
apache与nmon监控服务器
查看>>
Linux运维必会的MySQL企业面试题大全 推荐
查看>>
javascript的this关键字
查看>>
springboot(maven)项目打包问题
查看>>
12月18日笔记 相对路径,mkdir、rmdir、rm命令
查看>>
salt-ssh使用说明
查看>>
gopacket 使用
查看>>
Hbase Table already exists
查看>>