博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1196 [NOI2002]银河英雄传说 并查集
阅读量:4353 次
发布时间:2019-06-07

本文共 1157 字,大约阅读时间需要 3 分钟。

1 #include
2 #include
3 4 using namespace std; 5 6 int find(int); 7 int abs(int); 8 void setup(); 9 10 int fa[30005];11 int size[30005];12 int d[30005];13 int T,x,y,fx,fy;14 char f;15 16 int main(){17 setup();18 scanf("%d",&T);19 for(int i=1;i<=T;i++){20 do{21 f=getchar();22 }while(f!='M' && f!='C');23 scanf("%d%d",&x,&y);24 fx=find(x);25 fy=find(y);26 if(f=='C'){27 if(fx==fy)printf("%d\n",abs(d[x]-d[y])-1);28 else printf("-1\n");29 }30 else{31 fa[fx]=fy;32 d[fx]=size[fy];33 size[fy]+=size[fx];34 }35 }36 37 return 0;38 }39 40 int find(int x){ //无需处理size 41 if(fa[x]==x)return x;42 else{43 int gf=find(fa[x]);44 d[x]+=d[fa[x]];45 return fa[x]=gf;46 }47 }48 49 int abs(int x){50 if(x<0)return -x;51 else return x;52 }53 54 void setup(){55 for(int i=1;i<=30000;i++){56 fa[i]=i;57 size[i]=1;58 d[i]=0;59 }60 }

 

转载于:https://www.cnblogs.com/running-coder-wfh/p/11336691.html

你可能感兴趣的文章
设计模式之--单例模式(singleton)
查看>>
nyoj 1091 还是01背包(超大数dp)
查看>>
[Leetcode] jump game 跳跃游戏
查看>>
Linux两台服务器mysql数据库同步
查看>>
Git入门及上传项目到github中
查看>>
MyBatis源码解析(十)——Type类型模块之类型处理器TypeHandler
查看>>
关于unity3d调用摄像头的方法
查看>>
搜索--P1605 迷宫
查看>>
【XSY3344】连续段 DP 牛顿迭代 NTT
查看>>
【THUSC2017】【LOJ2978】杜老师 高斯消元
查看>>
RxJS核心概念之Subjet在angular2+上的应用
查看>>
[转]eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法
查看>>
Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词
查看>>
AlertDialog的onCreateDialog与onPrepareDialog用法
查看>>
swift菜鸟入门视频教程-12-21讲
查看>>
PL/SQL 异常处理程序
查看>>
javascript小白学习指南1---0
查看>>
div:给div加滚动栏 div的滚动栏设置
查看>>
java随机函数使用方法Random
查看>>
链表中环的入口结点
查看>>