3376: [Usaco2004 Open]Cube Stacking 方块游戏

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 256  Solved: 141
[Submit][Status][Discuss]

Description

    约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱.
   游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种:
    1.移动(M):将包含X的立方柱移动到包含Y的立方柱上.
    2.统计(C):统计名含X的立方柱中,在X下方的方块数目.
    写个程序帮贝茜完成游戏.

Input

    第1行输入P,之后P行每行输入一条指令.形式为“M X Y”或者“C X”
    输入保证不会有将立方柱放在自己头上的指令.

Output

    每一行,对于每个统计指令,输出其结果.

Sample Input

6
M 1 6
C 1
M 2 4
M 2 6
C 3
C 4

Sample Output

1
0
2

将x方块放在y上相当于合并root[x]和root[y],val[x]表示x到fa[x]中间有多少块

bet[x]表示x所在那一立方柱有多高

#include<stdio.h>
#include<algorithm>
using namespace std;
int fa[130005], val[130005], bet[130005];
int Find(int x)
{int temp;if(fa[x]==0)return x;temp = Find(fa[x]);val[x] += val[fa[x]];return fa[x] = temp;
}
int main(void)
{char ch;int n, i, x, y, t1, t2;scanf("%d", &n);for(i=1;i<=n;i++)bet[i] = 1;for(i=1;i<=n;i++){scanf(" %c", &ch);if(ch=='M'){scanf("%d%d", &x, &y);t1 = Find(x);t2 = Find(y);if(t1!=t2){fa[t1] = t2;val[t1] = bet[t2];bet[t2] += bet[t1];}}else{scanf("%d", &x);Find(x);printf("%d\n", val[x]);}}return 0;
}

3376: [Usaco2004 Open]Cube Stacking 方块游戏(带权并查集)相关推荐

  1. CDOJ 1070 秋实大哥打游戏 带权并查集

    链接 F - 秋实大哥打游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit ...

  2. 2015 UESTC 数据结构专题H题 秋实大哥打游戏 带权并查集

    秋实大哥打游戏 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...

  3. 带权并查集【bzoj3362】: [Usaco2004 Feb]Navigation Nightmare 导航噩梦

    [bzoj]3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦 ​ 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M(2≤M≤40000)条的不同的垂 ...

  4. cdoj 1070 秋实大哥打游戏 带权并查集

    题目链接: http://acm.uestc.edu.cn/#/problem/show/1070 题意: 题解: 带权并查集 每次往上更新的时候,顺便把边权更新了就好 记住得路径压缩 代码: 1 # ...

  5. 信息传递(带权并查集求最小环

    P2661 [NOIP2015 提高组] 信息传递 题意: nnn 个同学玩信息传递,第 iii 个同学只会将信息传递给同学 TiT_iTi​,游戏开始时每个人只知道自己的生日,一轮游戏同学 iii ...

  6. 2017乌鲁木齐区域赛I(带权并查集)

    #include<bits/stdc++.h> using namespace std; int f[200010];//代表元 long long rl[200010];//记rl[i] ...

  7. BZOJ 2303 方格染色(带权并查集)

    要使得每个2*2的矩形有奇数个红色,如果我们把红色记为1,蓝色记为0,那么我们得到了这2*2的矩形里的数字异或和为1. 对于每个方格则有a(i,j)^a(i-1,j)^a(i,j-1)^a(i-1,j ...

  8. POJ1703带权并查集(距离或者异或)

    题意:       有两个黑社会帮派,有n个人,他们肯定属于两个帮派中的一个,然后有两种操作 1 D a b 给出a b 两个人不属于同一个帮派 2 A a b 问a b 两个人关系 输出 同一个帮派 ...

  9. POJ1988(带权并查集,搬砖块)

    题意:        可以这样理解,有n快方形积木,一开始都是单独的放到哪,然后有两种操作 1 M a b 把a所在的那一堆落到b所在那一堆的上面(一开始自己是一堆) 2 C a 问a下面有多少个积木 ...

最新文章

  1. Linux DNS (2)搭建DNS服务器
  2. python3语法错误-python3中的def函数语法错误
  3. python 散点图_Python绘制散点图
  4. 第三次学JAVA再学不好就吃翔(part74)--Calendar类
  5. 002 模板实参推断、重载与模板
  6. Modbus协议栈应用实例之三:Modbus TCP客户端应用
  7. 【学习笔记】第三章——内存 IV(虚拟内存、请求分页、页面置换、缺页中断、抖动现象)
  8. 机器学习相关——协同过滤
  9. 数据表的查看 mysql
  10. 【BZOJ2154】Crash的数字表格,数论练习之二维LCM(莫比乌斯反演)
  11. idea中使用github
  12. Ubuntu学习(应用集合、命令行以及遇到的问题)
  13. SFTP服务的使用!!
  14. 58. web 攻击技术(2)
  15. Fastreport.Net用户手册(九):配置Bands
  16. 基于51的光立方制作
  17. STCMCU各系列里程碑的进化
  18. php copy路径出错,php – copy()函数的第二个参数不能是一个目录
  19. blender 常用快捷键
  20. 小米平板2Android分区表,DIY:8G+128G双系统小米平板2

热门文章

  1. python画柱状图-python使用matplotlib画柱状图、散点图
  2. 学python可以做什么-学会Python后都能做什么?介绍五种Python的实用场景
  3. python视频-python剪切视频与合并视频的实现
  4. 李开复看衰语音识别 这些国内外巨头却有话要说!
  5. 遍历矩阵每一行穷举_六十三---矩阵中的路径
  6. element时间范围选择添加限制条件
  7. 蓝桥c++2013真题:前缀判断(代码填空)
  8. linux分区磁盘大小,Linux对超大容量磁盘进行分区
  9. hbase 中文乱码 查询_如何在 HBase Shell 命令行正常查看十六进制编码的中文?哈哈~...
  10. Spring Boot 推荐的基础 POM 文件