Cod sursa(job #2815885)

Utilizator izavilcuIza Vilcu izavilcu Data 10 decembrie 2021 15:56:20
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
using namespace std;

ifstream f("disjoint.in");
ofstream g("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]=s1;
}

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

    }
    return 0;
 }