Cod sursa(job #2736401)

Utilizator foodinatorfoodinator foodinator Data 3 aprilie 2021 14:07:40
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,m,i,t[100005],c,a,b,t1,t2;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int tata(int x)
{
    if (t[x]==x) return x;
    else tata(t[x]);
}
int main()
{
    in>>n>>m;
    for (i=1;i<=n;i++)
        t[i]=i;
    for (i=1;i<=m;i++)
    {
        in>>c;
        if (c==1)
        {
            in>>a>>b;
            t1=tata(a);
            t2=tata(b);
            if (t1!=t2) t[t2]=t1;
        }
        else
        {
            in>>a>>b;
            t1=tata(a);
            t2=tata(b);
            if (t1==t2) out<<"DA"<<endl;
            else out<<"NU"<<endl;
        }
    }
}