sky_silence_gdk @ 2017-11-01 13:18:32
using namespace std;
class bcj
{ public:
int a[10001];
int find_set(int x)
{
if(a[x]!=x)
a[x]=find_set(a[x]);
else
return x;
}
void merge(int x,int y)
{
x=find_set(x),y=find_set(y);
if(x==y)
return ;
else
a[x]=y;
}
int make_set(int n)
{
for(int i=1;i<=n;i++)
a[i]=i;
}
};
int main()
{
int n,m;
scanf("%d %d",&n,&m);
bcj q;
q.make_set(n);
for(int i=1;i<=m;i++)
{
int t,x,y;
scanf("%d %d %d",&t,&x,&y);
if(t==1)
q.merge(x,y);
else
{
if(q.find_set(x)==q.find_set(y))
printf("Y\n");
else
printf("N\n");
}
}
}
by Broadway @ 2017-11-01 13:22:23
没有return 0……
by sky_silence_gdk @ 2017-11-01 13:24:23
。。。不会吧 我以前都不写也对的呀
by autoint @ 2017-11-01 13:28:21
测评机:返回值非零,程序一定错了
by sky_silence_gdk @ 2017-11-01 13:31:00
好吧 谢谢 但为啥这次不写就不是0呢 以前不写也就是0了呀
by sky_silence_gdk @ 2017-11-01 13:31:59
而且……我下第一个测试点自己测 结尾是with return value 0的呀……
by karma @ 2017-11-01 13:57:22
@sky_silence_gdk find_set(int x)写的有问题,没有返回值.
by karma @ 2017-11-01 13:58:55
@sky_silence_gdk 将find_set()改为
int find_set(int x)
{
if(a[x]!=x)
return a[x]=find_set(a[x]);
else
return x;
}
by sky_silence_gdk @ 2017-11-01 18:51:20
@ __乱世魇华 谢谢!改了就对了 那为什么我线下测可以过啊。。。
by sky_silence_gdk @ 2017-11-01 18:52:07
@__乱世魇华 谢谢!改了就对了 那为什么我线下测可以过啊。。。
by karma @ 2017-11-01 19:00:22
@sky_silence_gdk 玄学问题