POJ 1988 Cube Stacking(带权并查集)#by zh
来源:互联网 发布:遗传退火算法 编辑:程序博客网 时间:2024/05/16 12:58
这道题在做之前看了一下题目的提示说是并查集,而且之前也做过很类似的题,想了一下也挺有思路的就直接写了,结果就因为一开始没看清楚题目说明导致数组越界RE了一次,改了一下就直接AC了,终于不用看题解就能写出来了,感觉又有点信心了。这题就需要维护每个点的两个权值,一个是栈底元素所在栈里面元素的个数,还有就是在每个元素下面元素的个数。每次更新的时候就找到两个栈底的元素更新一下权值然后执行合并操作。在查询的时候也更新一下每个元素下面的元素个数,查询的时候执行完find函数后输出就行了。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int pa[30005],dis[30005],num[30005];char str[2];int find(int k){ if(pa[k]==k) return k; else { int t=find(pa[k]); dis[k]+=dis[pa[k]]; pa[k]=t; return pa[k]; }}int main(){ int n; scanf("%d",&n); for(int i=1;i<=30000;i++) { dis[i]=0; pa[i]=i; num[i]=1; } while(n--) { scanf("%s",str); if(str[0]=='M') { int x,y; scanf("%d%d",&x,&y); int t1=find(x),t2=find(y); dis[t1]=num[t2]; num[t2]+=num[t1]; pa[t1]=t2; } else { int x; scanf("%d",&x); find(x); printf("%d\n",dis[x]); } }}
- POJ 1988 Cube Stacking(带权并查集)#by zh
- 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 带权并查集
- 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[带权并查集]
- POJ - 1988 Cube Stacking(带权并查集)
- POJ 1988 Cube Stacking(带权并查集)
- POJ 1988 Cube Stacking【带权并查集】
- TinyC(TCC) 获得 LibTcc.dll 的简单方法
- 当我给了你体谅也给了自己远方:伤感日志
- 欧拉函数学习小结 #nobody
- Install Homebrew
- flexigrid 添加行选择事件
- POJ 1988 Cube Stacking(带权并查集)#by zh
- 一步一步教你写SAP RFC (实战项目)
- ubuntu建立向windows一样的快捷方式
- 由爱而生,由生而爱,生生不息
- 用C与脚本的混合编程来处理配置文件
- 怎么样才能学好c语言?
- 随机不同的数
- 逃出你的肖申克(二):你的灯亮着吗?
- 关于JAVA内部类笔记