CCCPaste

Untitled

#include 
#include 
using namespace std;

const int maxn=1e6+10;
int idx[maxn];
int s[maxn];

int find_root( int x)
{
    int t = x;
    while(idx[t]!=t)
    {
        idx[t]=idx[idx[t]];
        t=idx[t];
    }
    return t;
}


void u2e( int  i, int  j)
{
    int idx_i=find_root(i);
    int idx_j=find_root(j);
    if(idx_i!=idx_j)
    {
        if(s[idx_i] > s[idx_j])
        {
            s[idx_i]+=s[idx_j];
            idx[idx_j]=idx[idx_i];
        }
        else
        {
            s[idx_j]+=s[idx_i];
            idx[idx_i]=idx[idx_j];
        }
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    
    int n;
    int q;
    cin>>n>>q;
    for(int i=0;i>c>>a>>b;
        if(c=='=')
        {
            u2e(a,b);
        }
        else
        {
            if(find_root(a) == find_root(b))
            {
                printf("yes\n");
            }
            else
            {
                printf("no\n");
            }
        }
    }
    return 0;
}