bzoj 3376: [Usaco2004 Open]Cube Stacking 方块游戏 带权并查集
来源:互联网 发布:淘宝海外集运 编辑:程序博客网 时间:2024/06/06 06:56
题意
约翰和贝茜在玩一个方块游戏.编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方柱.
游戏开始后,约翰会给贝茜发出P(1≤P≤100000)个指令.指令有两种:
1.移动(M):将包含X的立方柱移动到包含Y的立方柱上.
2.统计(C):统计名含X的立方柱中,在X下方的方块数目.
写个程序帮贝茜完成游戏.
分析
直接上带权并查集即可。
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int N=30005;int dis[N],m,f[N],size[N];int get_dis(int x){ int ans=0; while (f[x]!=x) ans+=dis[x],x=f[x]; return ans+dis[x];}int find(int x){ while (f[x]!=x) x=f[x]; return x;}void merge(int x,int y){ int fx=find(x),fy=find(y); if (size[fx]<size[fy]) dis[fx]+=size[fy]-dis[fy],size[fy]+=size[fx],f[fx]=fy; else dis[fy]-=dis[fx],dis[fx]+=size[fy],dis[fy]-=size[fy],size[fx]+=size[fy],f[fy]=fx;}int main(){ for (int i=1;i<=30000;i++) f[i]=i,size[i]=1; scanf("%d",&m); while (m--) { char op[2]; scanf("%s",op); if (op[0]=='M') { int x,y; scanf("%d%d",&x,&y); merge(x,y); } else { int x; scanf("%d",&x); printf("%d\n",get_dis(x)); } } return 0;}
阅读全文
0 0
- bzoj 3376: [Usaco2004 Open]Cube Stacking 方块游戏 带权并查集
- bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏 — 带权并查集
- BZOJ 3376: [Usaco2004 Open]Cube Stacking 方块游戏
- 3376: [Usaco2004 Open]Cube Stacking 方块游戏
- bzoj3376 [Usaco2004 Open]Cube Stacking 方块游戏
- bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏
- POJ 1988/bzoj3376[Usaco2004 Open]Cube Stacking 方块游戏
- POJ-1988 Cube Stacking 带权并查集
- poj 1988 Cube Stacking(带权并查集)
- POJ 1988 Cube Stacking (带权并查集)
- poj 1988 Cube Stacking(带权并查集)
- POJ 1988 Cube Stacking(带权并查集)
- poj 1988 Cube Stacking(数据结构:带权并查集)
- poj-1988 Cube Stacking 带权并查集
- POJ1988-Cube Stacking(带权并查集)
- poj 1988 Cube Stacking 带权并查集
- poj 1988 Cube Stacking(带权并查集)
- POJ1988 Cube Stacking 带权并查集
- AIDL基本使用(二)
- Nvidia SDK11 之 PNPatches(细化算法技术学习)
- sublimeText3使用的一些基础配置
- 启动tomcat出现out of memory错误
- 100道C#面试题(.net开发人员必备)
- bzoj 3376: [Usaco2004 Open]Cube Stacking 方块游戏 带权并查集
- Codeforces 705D Ant Man DP(贡献)
- 扫描手机sdka里的音乐并播放
- 经典.net面试题目
- 全面详细的github中文教程
- HDU 6092 Rikka with Subset【多重背包+贪心】
- ROS-I开发流程
- 基于angularJs和Bootstrap的简易计算器
- POJ