线下测试下载的数据都对 线上全是RE???求大佬纠错。。

P3367 【模板】并查集

sky_silence_gdk @ 2017-11-01 13:18:32

include <bits/stdc++.h>

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 玄学问题


| 下一页