Poj 1988 Cube Stacking
2016-06-30 10:18
281 查看
题意:有n个元素,开始每个元素自己一栈,有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈。第二种操作是询问含有x元素下面有多少个元素。
解析:直接上代码
解析:直接上代码
#include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; const int maxn=100009; int set[maxn]; int top[maxn]; int cnt[maxn]; int n; int find(int x) { if(set[x]<0) return x; if(set[set[x]]>=0) { int fa=set[x]; set[x]=find(fa); cnt[x]+=cnt[fa]; } return set[x]; } void merge(int x,int y) { x=find(x); y=find(y); set[x]=y; find(top[y]); cnt[x]=cnt[top[y]]+1; top[y]=top[x]; } int main() { while(scanf("%d",&n)!=EOF) { memset(set,-1,sizeof(set)); memset(cnt,0,sizeof(cnt)); for(int i=0;i<maxn;i++) top[i]=i; char st[23]; for(int i=0;i<n;i++) { scanf("%s",st); if(st[0]=='M') { int x,y; scanf("%d%d",&x,&y); merge(x,y); } else { int x; scanf("%d",&x); find(x); printf("%d\n",cnt[x]); } } } return 0; }
相关文章推荐
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1001
- POJ ACM 1002
- 1611:The Suspects
- POJ1089 区间合并
- POJ 2159 Ancient Cipher
- POJ 2635 The Embarrassed Cryptographe
- POJ 3292 Semi-prime H-numbers
- POJ 2773 HAPPY 2006
- POJ 3090 Visible Lattice Points
- POJ-2409-Let it Bead&&NYOJ-280-LK的项链
- POJ-1695-Magazine Delivery-dp
- POJ1523 SPF dfs
- POJ-1001 求高精度幂-大数乘法系列
- POJ-1003 Hangover
- POJ-1004 Financial Management
- [数论]poj2635__The Embarrassed Cryptographer
- [二分图匹配]poj2446__Chessboard
- POJ1050 最大子矩阵和
- 用单调栈解决最大连续矩形面积问题