社区讨论
大神求教,哪里出了问题?
P1196[NOI2002] 银河英雄传说参与者 6已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @locb4wy0
- 此快照首次捕获于
- 2023/10/30 10:55 2 年前
- 此快照最后确认于
- 2023/11/04 22:43 2 年前
CPP
#include<iostream>
#include<cstdio>
//#include<bits/stdc++.h>
using namespace std;
int fx,fy,front[30005],num[30005],fa[30005],x,y,xx,yy,n;
char ch;
int find(int x)
{
if(x!=fa[x])
{
front[x]+=front[fa[x]];
fa[x]=find(fa[x]);
}
return fa[x];
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=30000;i++)front[i]=0,num[i]=1,fa[i]=i;
for(int i=1;i<=n;i++)
{
cin>>ch>>x>>y;
//scanf("%c %d %d",&ch,&x,&y);
fx=find(x);
fy=find(y);
if(ch=='M')
{
front[fx]+=num[fy];
fa[fx]=fy;
num[fy]+=num[fx];
num[fx]=0;
}
if(ch=='C')
{
if(fx!=fy)
{
printf("-1\n");
}
else
if(fx==fy)
{
printf("%d\n",abs(front[x]-front[y])-1);
}
}
}
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...