Cod sursa(job #2718749)

Utilizator Costea_AlexandruCostea Alexandru Costea_Alexandru Data 9 martie 2021 09:30:49
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
int n,m,t[100001],c,x,y,r1,r2;
int Rad(int x)
{
    if(x == t[x])
        return x;
    return t[x] = Rad(t[x]);
}

int main()
{
    int i;
    fi >> n >> m;
    for(i=1; i<=n; i++)
        t[i] = i;
    for(i=1; i<=m; i++)
    {
        fi >> c >> x >> y;
        if(c == 1)
        {
            r1 = Rad(x);
            r2 = Rad(y);
            if(r1 != r2)
                t[r1] = r2;
        }
        else
        {
            if(Rad(x) == Rad(y))
                fo << "DA\n";
            else
                fo << "NU\n";
        }
    }
    return 0;
}