题面:

    约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱.
   游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种:
    1.移动(M):将包含X的立方柱移动到包含Y的立方柱上.
    2.统计(C):统计名含X的立方柱中,在X下方的方块数目.
    写个程序帮贝茜完成游戏.
 
解法:带权并查集,记录一个底面,顶面,x上面的立方体的个数。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=;
int n,dep[N],dis[N],fa[N];
int find(int x) {
if(x!=fa[x]) {
int fx=fa[x];
fa[x]=find(fx);
dep[x]=dep[fx];
dis[x]+=dis[fx];
}
return fa[x];
}
inline void merge(int x,int y) {
int fx=find(x),fy=find(y);
fa[fy]=fx;dis[fy]=dis[dep[x]]+;dep[fx]=dep[fy];
find(dep[fx]),find(dep[fy]);
}
int main() {
scanf("%d",&n);
for(int i=;i<N;i++) fa[i]=dep[i]=i;
char opt[];int x,y;
for(int i=;i<=n;i++) {
scanf("%s",opt);
switch (opt[]) {
case 'M' :scanf("%d%d",&x,&y);merge(x,y);break;
case 'C' :scanf("%d",&x);find(x);printf("%d\n",dis[dep[x]]-dis[x]);break;
}
}
}

[Usaco2004 Open]Cube Stacking 方块游戏

最新文章

  1. Python(八)进程、线程、协程篇
  2. Python 基础语法学习笔记
  3. fastJson使用
  4. Opencv 完美配置攻略(Win8.1 + Opencv 2.4.8 + VS 2013)
  5. PAT A 1013. Battle Over Cities (25)【并查集】
  6. 蓝桥T291(BFS + 输出路径)
  7. mysql之对索引的操作
  8. 结队开发项目——七巧板NABC需求分析
  9. 【HDOJ】3316 Mine sweeping
  10. JVMTI 中间JNI系列功能,线程安全和故障排除技巧
  11. 51NOD 1220&#160;约数之和 [杜教筛]
  12. 实例 编辑 .bashrc(不断更新)
  13. iOS逆向开发(3):锁定APP的目标类与函数 | reveal | lldb | debugserver | 远程调试
  14. 连接到docker 指定的一个容器中
  15. web 和 java 资源
  16. PISQLDAS 查询语句
  17. innodb表锁情况
  18. matlab练习程序(异或分类)
  19. jvm 知识点
  20. 2018.07.18 洛谷P1171 售货员的难题(状压dp)

热门文章

  1. LinkedList,ArrayList末尾插入谁效率高?
  2. 《Spring技术内幕》笔记-第二章 IoC容器的实现
  3. (OK) Installing Quagga—zebra—configure—make—CentOS7
  4. Atitit. C# java 的api 文件夹封装结构映射总结
  5. STM32F103频率和AD採集项目总结
  6. oc64--协议2@protocol
  7. 【bzoj2038】[2009国家集训队]小Z的袜子(hose)(细致总结)
  8. Swift备忘录
  9. A - High School: Become Human
  10. VS2015 右侧导航插件地址