社区讨论
本地运行成功,洛谷全WA???
P1196[NOI2002] 银河英雄传说参与者 5已保存回复 15
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 15 条
- 当前快照
- 1 份
- 快照标识符
- @mi7z2338
- 此快照首次捕获于
- 2025/11/21 05:57 4 个月前
- 此快照最后确认于
- 2025/11/21 06:47 4 个月前
代码
CPP#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int t,f[30001],d[30001],size[30001];
char mod;
int getf(int v)
{
if(f[v]==v) return v;
d[v]+=d[f[v]];
return f[v]=getf(f[v]);
}
void merge(int x,int y)
{
x=getf(x),y=getf(y);
f[x]=y,d[x]=size[y];
size[y]+=size[x];
return;
}
int read()
{
char c=getchar();
int x=0,f=1;
while(!isdigit(c))
{
if(c=='-') f=-1;
c=getchar();
}
while(isdigit(c))
{
x=x*10+c-48;
c=getchar();
}
return x*f;
}
int main()
{
t=read();
for(int i=1;i<=30000;i++)
{
f[i]=i;
size[i]=1;
}
for(int i=1;i<=t;i++)
{
int x,y;
scanf("%c",&mod);
x=read(),y=read();
if(mod=='M') merge(x,y);
else
{
if(getf(x)==getf(y)) printf("%d\n",abs(d[y]-d[x])-1);
else printf("-1\n");
}
}
return 0;
}
难道是Linux的锅???
数据:
CPP数据:
10
M 3 4
M 3 5
M 1 2
M 1 3
C 3 1
C 5 1
C 3 4
C 3 5
C 5 1
C 4 2
输出
CPP1
3
0
1
3
1
回复
共 15 条回复,欢迎继续交流。
正在加载回复...