Cod sursa(job #1488306)

Utilizator TibixbAndrei Tiberiu Tibixb Data 18 septembrie 2015 17:33:10
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int t[100003], n, m, i, op, x, x2, y, y2;
int rad(int x)
{
    while(t[x]>0)
        x=t[x];
    return x;
}
int main()
{
    in>>n>>m;
    for(i=1; i<=n; i++)
        t[i]=-1;
    for(;m--;)
    {
        in>>op>>x>>y;
        x2=rad(x);
        y2=rad(y);
        if(op==1)
        {
            if(x2!=y2)
            {
                if(t[x2]<t[y2])
                {
                    t[x2]+=t[y2];
                    t[y2]=x2;
                }
                else
                {
                    t[y2]+=t[x2];
                    t[x2]=y2;
                }
            }
        }
        else
        {
            if(x2==y2)
                out<<"DA\n";
            else
                out<<"NU\n";
        }
    }
}