POJ 1988相对偏移
来源:互联网 发布:股票数据图怎么看 编辑:程序博客网 时间:2024/05/21 09:18
//不容易啊,终于自己a了一道这种类型的题
//
#include<stdio.h>
#include<iostream>
using namespace std;
const int N=30010;
struct node {
int front,last,count;
}pre[N];
int find(int x) {//指向队尾
if(x!=pre[x].last) {
int h=pre[x].last;
pre[x].last=find(pre[x].last);
pre[x].count=pre[h].count+pre[x].count;//路径压缩
}
return pre[x].last;
}
int find1(int x) {//求队首相当于一个元素指向两个方向,这个指向队首
if(x!=pre[x].front)
pre[x].front=find1(pre[x].front);
return pre[x].front;
}
int main() {
int n,i,a,b,f1,f2;
char s[2];
while(scanf("%d",&n)!=EOF) {
for(i=1;i<=N;i++) {
pre[i].last=i;
pre[i].front=i;
pre[i].count=0;
}
while(n--) {
scanf("%s",s);
if(s[0]=='M') {
scanf("%d%d",&a,&b);
f1=find(a);//a集合的队尾
f2=find(b);
if(f1==f2)//如果有相同的根节点不用再加了
continue;
f2=find1(b);//求b集合的队首
pre[f1].last=f2;//a集合队尾指向b集合队首
pre[f1].count=1;//权值为1
pre[f2].front=f1;//b集合的队首指向a集合的队尾
}
else {
scanf("%d",&a);
find(a);
printf("%d\n",pre[a].count);
}
}
}
return 0;
}
//我在网上看了个代码我承认我的方法没有人家的好我又写了一下
#include<stdio.h>
#include<iostream>
using namespace std;
const int N=30010;
int pre[N],dis[N],sondis[N];
int find(int x) {
if(x!=pre[x]) {
int h=pre[x];
pre[x]=find(pre[x]);
dis[x]+=dis[h];
}return pre[x];
}
void unions(int x,int y) {
int f1=find(x);
int f2=find(y);
if(f1==f2)
return ;
pre[f1]=f2;
dis[f1]=sondis[f2]+1;
sondis[f2]=sondis[f2]+sondis[f1]+1;
}
int main() {
int n,m,i,j,k,a,b;
char s[2];
while(scanf("%d",&n)!=EOF) {
for(i=1;i<=N;i++) {
pre[i]=i;
dis[i]=0;
sondis[i]=0;
}
while(n--) {
scanf("%s",s);
if(s[0]=='M') {
scanf("%d%d",&a,&b);
unions(a,b);
}
else {
scanf("%d",&a);
find(a);
printf("%d\n",dis[a]);
}
}
}
return 0;
}
- POJ 1988相对偏移
- 2013/07/31 SQLLDR POSITION(*) 相对偏移
- poj1984并查集的相对偏移
- POJ 1988 带偏移量的并查集
- poj 1019(组外偏移->组内偏移)
- 利用相对定位及偏移量做精美输入界面
- java 获得相对偏移 N 月的时间
- 求结构体某个变量的相对偏移量
- 求结构体某个变量的相对偏移量
- 获取鼠标相对某个div的偏移量
- 相对虚拟地址,虚拟地址,文件偏移地址
- 64位驱动相对偏移的计算E8call
- poj.1988并查集-路径压缩、更新结点(偏移量)
- POJ 1733 并查集 偏移向量
- 取平面坐标相对角度(0-359度)及两角的相对角偏移量的函数
- 理解PE文件相对虚拟地址(RVA)到文件偏移的转换
- CSS:利用相对定位及偏移量做精美输入界面
- PE文件关于虚拟相对地址RVA与基于文件的偏移地址关系
- 时间格式化
- 项目管理师--质量管理 1
- asp_验证码
- Ogre中调用OgreMaxViewer来load场景文件.scene
- Ogre中导入Max烘焙的模型(4)——Ogre与MAX的坐标变化
- POJ 1988相对偏移
- 安卓中的Environment.getExternalStorageDirectory().getAbsolutePath()
- 黑马程序员---Hibernate中load与get的区别
- 基于HOG和SVM的复杂背景下的手势识别应用于Android手机相册管理(录像)
- 在vs中导入libcurl库(c++)
- volatile 的用法
- Linux中tty框架与uart框架之间的调用关系剖析
- 新博客哈哈
- 考虑用静态工厂方法代替构造器