NOI2002 银河英雄传说

来源:互联网 发布:三星s5怎样设置4g网络 编辑:程序博客网 时间:2024/06/02 11:34
#include<cstdio>#include<cstring>#include<string.h>#include<iostream>#include<math.h>#include<algorithm>#include<vector>#include<set>using namespace std;int fa[30001],s[30001],t[30001],m;int find(int v){int p;if(fa[v]==v)return v;p=find(fa[v]);s[v]+=s[fa[v]];fa[v]=p;return fa[v];}int main(){int i,fx,fy,x,y;char ch;scanf("%d\n",&m);for(i=1;i<=30000;i++){fa[i]=i;s[i]=0;t[i]=1;}for(i=1;i<=m;i++){scanf("%c %d %d\n",&ch,&x,&y);fx=find(x);fy=find(y);if(ch=='M'){if(fx!=fy){fa[fx]=fy;s[fx]+=t[fy];t[fy]+=t[fx];}}else {if(fx!=fy)printf("-1\n");elseif(x==y)printf("0\n");else printf("%d\n",int(abs(s[x]-s[y])-1));}}return 0;}

点击打开链接

int find(int v){if(fa[v]==v)return v;int p=fa[v];fa[v]=find(fa[v]);s[v]+=s[p];return fa[v];}


原创粉丝点击