博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2818 Building Block(并查集,输出一元素下边有多少)
阅读量:4037 次
发布时间:2019-05-24

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

简单并查集,只是注意输出的是x下边有多少元素

1、题目大意:

john 正在玩积木,有N个积木编号为1、、、N,分成N堆,每堆只包含一个积木,然后做P次操作,操作分为2种,

M X Y:把包含X的一堆放到包含Y的一堆上,如果XY同在一堆上,不做处理

C X:计算出X积木下边有多少个积木

每次遇到C操作,输出数量

2、题目:

Building Block

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1729    Accepted Submission(s): 516

Problem Description
John are playing with blocks. There are N blocks (1 <= N <= 30000) numbered 1...N。Initially, there are N piles, and each pile contains one block. Then John do some operations P times (1 <= P <= 1000000). There are two kinds of operation:
M X Y : Put the whole pile containing block X up to the pile containing Y. If X and Y are in the same pile, just ignore this command.
C X : Count the number of blocks under block X
You are request to find out the output for each C operation.

 

Input
The first line contains integer P. Then P lines follow, each of which contain an operation describe above.

 

Output
Output the count for each C operations in one line.

 

Sample Input
6M 1 6C 1M 2 4M 2 6C 3C 4

 

Sample Output
102

3、代码:

 

#include
#include
int num[333333];int set[333333];int under[333333];int find(int x){ int tmp; if (x!=set[x]) { tmp = find(set[x]); under[x] += under[set[x]]; set[x] = tmp; } return set[x];}void merge(int a,int b){ int fx=find(a); int fy=find(b); if(fx!=fy) { under[fx]=num[fy]; num[fy]+=num[fx]; set[fx]=fy; }}int main(){ int n,a,b; char s[5]; while(scanf("%d",&n)!=EOF) { memset(under,0,sizeof(under)); for(int i=0; i<=n; i++)//初始化 { set[i]=i; num[i]=1; } for(int i=0; i

 

转载地址:http://ufcdi.baihongyu.com/

你可能感兴趣的文章
查看当前占用端口、关闭当前端口所暂用的进程
查看>>
Eclipse中有用的快捷键
查看>>
mysql将表字段信息拼接转换成实体类中的属性书写格式
查看>>
有return的情况下try catch finally的执行顺序
查看>>
input文本框中value值有双引号的问题
查看>>
java多线程简介
查看>>
web.xml配置加载顺序
查看>>
ServletContextListener使用详解
查看>>
UrlRewriteFilter使用说明
查看>>
java对redis的基本操作
查看>>
Java Math的 floor,round和ceil的使用
查看>>
通过url方式传递中文乱码解决办法
查看>>
Java的初始化机制、垃圾回收机制和内存分配机制
查看>>
MySQL5.6安装步骤(windows7/8_64位)
查看>>
FreeMarker基础配置
查看>>
Java中使用Jedis操作Redis
查看>>
Redis中常用命令
查看>>
spring下载
查看>>
读取request流
查看>>
微信消息模板的配置
查看>>