poj 1988 Cube Stacking && codevs 1540 银河英雄传说(加权并茶几)
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 30010
using namespace std;
int m,fa[maxn],top[maxn],num[maxn];
char s;
int find(int x)
{
if(x==fa[x])return x;
int f=fa[x];
fa[x]=find(fa[x]);
num[x]=num[x]+num[f];
return fa[x];
}
void merge(int a,int b)
{
int r1=find(a);
int r2=find(b);
fa[r1]=r2;
find(top[r2]);
num[r1]=num[top[r2]]+;
top[r2]=top[r1];
}
int main()
{
scanf("%d",&m);
int x,y;
for(int i=;i<=;i++)
fa[i]=top[i]=i;
for(int i=;i<=m;i++)
{
cin>>s;
if(s=='M')
{
scanf("%d%d",&x,&y);
if(find(x)==find(y))continue;
merge(x,y);
}
if(s=='C')
{
scanf("%d",&x);
int tmp=find(x);
printf("%d\n",num[x]);
}
}
return ;
}
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 30010
using namespace std;
int m,fa[maxn],top[maxn],num[maxn];
char s;
int find(int x)
{
if(x==fa[x])return x;
int f=fa[x];
fa[x]=find(fa[x]);
num[x]=num[x]+num[f];
return fa[x];
}
void merge(int a,int b)
{
int r1=find(a);
int r2=find(b);
fa[r1]=r2;
find(top[r2]);
num[r1]=num[top[r2]]+;
top[r2]=top[r1];
}
int main()
{
//freopen("no.txt","w",stdout);
scanf("%d",&m);
int x,y;
for(int i=;i<=;i++)
fa[i]=top[i]=i;
for(int i=;i<=m;i++)
{
cin>>s;
if(s=='M')
{
scanf("%d%d",&x,&y);
if(find(x)==find(y))continue;
merge(x,y);
}
if(s=='C')
{
scanf("%d%d",&x,&y);
int r1=find(x);
int r2=find(y);
if(r1!=r2)printf("-1\n");
else printf("%d\n",max(num[x],num[y])-min(num[x],num[y])-);
}
}
return ;
}
poj 1988 Cube Stacking && codevs 1540 银河英雄传说(加权并茶几)的更多相关文章
- POJ 1988 Cube Stacking(并查集+路径压缩)
题目链接:id=1988">POJ 1988 Cube Stacking 并查集的题目 [题目大意] 有n个元素,開始每一个元素自己 一栈.有两种操作,将含有元素x的栈放在含有y的栈的 ...
- POJ 1988 Cube Stacking( 带权并查集 )*
POJ 1988 Cube Stacking( 带权并查集 ) 非常棒的一道题!借鉴"找回失去的"博客 链接:传送门 题意: P次查询,每次查询有两种: M x y 将包含x的集合 ...
- poj.1988.Cube Stacking(并查集)
Cube Stacking Time Limit:2000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u Submi ...
- POJ 1988 Cube Stacking(带权并查集)
Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 23678 Accepted: 8299 Ca ...
- POJ 1988 Cube Stacking (种类并查集)
题目地址:POJ 1988 这道题的查找合并的方法都能想的到,就是一点没想到,我一直天真的以为查询的时候,输入后能立即输出,这种话在合并的时候就要所有的结点值都要算出来,可是经过路径压缩之后,没办法所 ...
- [POJ 1988] Cube Stacking (带值的并查集)
题目链接:http://poj.org/problem?id=1988 题目大意:给你N个方块,编号从1到N,有两种操作,第一种是M(x,y),意思是将x所在的堆放到y所在的堆上面. 第二种是C(x) ...
- POJ 1988 Cube Stacking 【带权并查集】
<题目链接> 题目大意: 有几个stack,初始里面有一个cube.支持两种操作: 1.move x y: 将x所在的stack移动到y所在stack的顶部. 2.count x:数在x所 ...
- POJ 1988 Cube stacking【并查集高级应用+妙用deep数组】
Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes ...
- POJ 1988 Cube Stacking
题意:有编号为1~N的N个小木块,有两种操作 M x y 将木块x所在的堆放到木块y所在的堆的上面 C x 询问木块x下面有多少块木块 代码巧妙就巧妙在GetParent函数中在进行路径压缩的同时,也 ...
随机推荐
- 将CSS CLIP属性应用在:扩展覆盖效果
我们想要展示如何利用CSS3 clip属性制作一种简单而整洁的扩展效果,当点击一个box元素时实现平稳过渡.这个想法是为了实现某种叠加效果,好像它实际上在各个元素的下面.点击其中一个元素将创建一个切断 ...
- JavaScript设计模式之构造函数模式
一.构造函数模式概念 构造函数用于创建特定类型的对象——不仅声明了使用过的对象,构造函数还可以接受参数以便第一次创建对象的时候设置对象的成员值.你可以自定义自己的构造函数,然后在里面声明自定义类型对象 ...
- 用jquery写了个选项卡,当作一个笔记吧。
<!DOCTYPE HTML> <html lang="en"> <head> <meta http-equiv="Conten ...
- MLlib 编程指导-spark-1.2.0
本文来自 http://spark.apache.org/docs/latest/mllib-guide.html 官方文档翻译 个人翻译 MLlib包括的算法和工具主要有:分类,回归,聚类,协同过滤 ...
- sql server 调优----索引未使用
SELECT TOP 1000o.name AS 表名, i.name AS 索引名, i.index_id AS 索引id, dm_ius.user_seeks AS 搜索次数, dm_ius.us ...
- css()和 attr()的区别
- 前端面试题第二波,要offer的看过来~
快来测试测试自己掌握能力吧! 1. class.forname的作用?为什么要用? 1).获取Class对象的方式:类名.class.对象.getClass().Class.forName(" ...
- 10 - 删除vtkDataObject中的Update Extent方法 VTK 6.0 迁移
VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.下面列出来的就是其中的一些方法: SetUpdateExtent(int piece, int numPi ...
- Vim记录
Command Mode下: . 代表当前行 % 代表所有行 $ 代表结束行 :1,$normal i# 全部行前加#,同下 :%normal i# :read ! cd /usr/bin/; ...
- Jzzhu and Cities
CF #257 div2D:http://codeforces.com/contest/450/problem/D 题意:给你n个城市,m条无向有权边.另外还有k条边,每条边从起到到i.求可以删除这k ...