Cod sursa(job #2815874)

Utilizator Laura139Anghel Laura Laura139 Data 10 decembrie 2021 15:50:58
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb
#include <fstream>

using namespace std;

ifstream in("disjoint.in");
ofstream out("disjoint.out");

int tata[100001];

int sef(int x)
{
                if(tata[x]==x)
                                return x;
                else
                {
                                return tata[x]=sef(tata[x]);
                }
}
void unire(int x,int y)
{
           int s1,s2;
           s1=sef(x);
           s2=sef(y);
           tata[s2]=tata[s1];
}

int main()
{
    int n,m,tip,x,y,s1,s2;
    in>>n>>m;
    for(int i=1;i<=n;i++)
    {
                    tata[i]=i;
    }
    for(int i=1;i<=m;i++)
    {
                    in>>tip>>x>>y;
                    if(tip==1)
                    {
                                    unire(x,y);
                    }
                    else
                    {
                                    s1=sef(x);
                                    s2=sef(y);
                                    if(s1==s2)
                                    {
                                                    out<<"DA"<<'\n';
                                    }
                                    else
                                    {
                                                    out<<"NU"<<'\n';
                                    }
                    }
    }
    return 0;
}