Cube Stacking(并查集)
来源:互联网 发布:vue nginx 跨域 编辑:程序博客网 时间:2024/06/05 09:36
http://poj.org/problem?id=1988
Cube Stacking
Time Limit: 2000MS Memory Limit: 30000KTotal Submissions: 22312 Accepted: 7823Case Time Limit: 1000MS
Description
Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start with N stacks, each containing a single cube. Farmer John asks Betsy to perform P (1<= P <= 100,000) operation. There are two types of operations:
moves and counts.
* In a move operation, Farmer John asks Bessie to move the stack containing cube X on top of the stack containing cube Y.
* In a count operation, Farmer John asks Bessie to count the number of cubes on the stack with cube X that are under the cube X and report that value.
Write a program that can verify the results of the game.
moves and counts.
* In a move operation, Farmer John asks Bessie to move the stack containing cube X on top of the stack containing cube Y.
* In a count operation, Farmer John asks Bessie to count the number of cubes on the stack with cube X that are under the cube X and report that value.
Write a program that can verify the results of the game.
Input
* Line 1: A single integer, P
* Lines 2..P+1: Each of these lines describes a legal operation. Line 2 describes the first operation, etc. Each line begins with a 'M' for a move operation or a 'C' for a count operation. For move operations, the line also contains two integers: X and Y.For count operations, the line also contains a single integer: X.
Note that the value for N does not appear in the input file. No move operation will request a move a stack onto itself.
* Lines 2..P+1: Each of these lines describes a legal operation. Line 2 describes the first operation, etc. Each line begins with a 'M' for a move operation or a 'C' for a count operation. For move operations, the line also contains two integers: X and Y.For count operations, the line also contains a single integer: X.
Note that the value for N does not appear in the input file. No move operation will request a move a stack onto itself.
Output
Print the output from each of the count operations in the same order as the input file.
Sample Input
6M 1 6C 1M 2 4M 2 6C 3C 4
Sample Output
102
Source
USACO 2004 U S Open
简单并查集,入门好题#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int SIZE=3e4+10;int parent[SIZE];int under[SIZE],sum[SIZE];int getroot(int x){ if(parent[x]==x)return x; int fx=getroot(parent[x]);//递归获得根,前面的层数的返回最后的根节点 under[x]+=under[parent[x]];//是parent[x]不是fx,给的例子中先最新的fx的under是0,而加的应该是原先的under值, return parent[x]=fx;}//一次性把一条路径上的点更新了,每个parent[x]都是保存了当初一次的under的值,不太好表达void Merge(int x,int y){ int fx=getroot(x),fy=getroot(y); if(fx==fy)return ; parent[fx]=fy; under[fx]=sum[fy]; sum[fy]+=sum[fx];}int main(){ int p,x,y,c; while(scanf("%d",&p)!=EOF){ char s[10]; for(int i=1;i<SIZE;i++){ under[i]=0; sum[i]=1; parent[i]=i; } while(p--){ scanf("%s",s); if(s[0]=='M'){ scanf("%d%d",&x,&y); Merge(x,y); } else { scanf("%d",&c); getroot(c); printf("%d\n",under[c]); } } return 0; }}/**M 1 2M 1 3M 1 4画画图***/
0 0
- K - Cube Stacking(并查集)
- Cube Stacking(并查集)
- POJ1988 Cube Stacking(并查集)
- POJ1988:Cube Stacking(并查集)
- Cube Stacking -- 并查集
- POJ 1988 CUBE STACKING(并查集)
- poj 1079 Cube Stacking(并查集)
- POJ 1988 Cube Stacking (带权并查集)
- HDU 1988 Cube Stacking (数据结构-并查集)
- HDU 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(并查集+路径压缩)
- Cube Stacking 1988 (并查集 好题)
- POJ - 1988 Cube Stacking(带权并查集)
- Tomcat 启动报错:SEVERE: Error listenerStart
- Operating Systems: Three Easy Pieces(操作系统:三个简单方面)4.5数据结构4.6总结
- SmartImageView框架使用
- zookeeper原理
- Cocos2d-x引入中文支持库并移植到android平台
- Cube Stacking(并查集)
- 关于java的一些易错知识
- 道可道,非常道
- 富文本web编辑器--ueditor的使用
- js中的事件委托
- linux内核编译kernel编译
- c++面试题(2)
- HDOJ 1019 Least Common Multiple(最小公倍数问题)
- asp.net 结合mysql存储过程进行分页代码