POJ 1988相对偏移
//不容易啊,终于自己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;
}
最新文章
- 使用jenkins配置.net mvc网站进行持续集成三
- GridView 动态添加绑定列和模板列
- 批量删除 svn文件
- java 常见dos命令
- MVC中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
- SET UPDATE TASK LOCAL
- 五个有用的jquery小技巧
- SqlServer维护计划
- 【Linux】vi编辑器命令
- makefile高级用法--使用函数
- 虚拟化之KVM的安装续篇
- python 杨辉三角 算法实现
- IScroll那些事——内容不足时下拉刷新
- StringUtils工具类常用方法汇总1(判空、转换、移除、替换、反转)
- MYSQL———正则表达式查询!
- 搭建SpringBoot+dubbo+zookeeper+maven框架(一)
- Dictionary 对象
- mqtt介绍
- JS三种简单排序算法
- android 学习过程中登陆失效的个人理解
热门文章
- 应用交付、负载均衡(Load balancing)、高可用、F5
- Hibernate3中重复引用hbm文件错误信息记录
- 【转载】WebConfigurationManager和ConfigurationManager
- Hackonacci Matrix Rotations 观察题 ,更新了我的模板
- Oracle事务控制语言
- Webform 内置对象 Session对象、Application全局对象,ViewState
- iOS 中集成百度echarts3.0
- time模块、datetime模块讲解
- java.lang.String 字符串操作
- iOS Programming UIStoryboard 故事板