Cod sursa(job #2662172)

Utilizator radu16012003Radu Dumitrache radu16012003 Data 23 octombrie 2020 17:05:24
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,t[100001];
int radacina(int x)
{
    if (t[x]==x)
        return x;
    else
        return radacina(t[x]);

}
void unire(int x,int y)
{
    if (t[x]>t[y])
        t[x]=t[y];
    else
        t[y]=t[x];


}
int main()
{
    fin>>n>>m;
    int x,y,op;
    for (int i=1;i<=n;i++)
        t[i]=i;
    for (int i=1;i<=m;i++)
    {
        fin>>op;
        fin>>x>>y;
        if (op==1)
        {
            int r1=radacina(x),r2=radacina(y);
            unire(r1,r2);

        }
        else
        {
            if (radacina(x)==radacina(y))
                fout<<"DA\n";
            else
                fout<<"NU\n";


        }

    }
    return 0;
}