Cod sursa(job #3191397)

Utilizator Cazacu2006RazvanRazvan Cazacu Cazacu2006Razvan Data 9 ianuarie 2024 17:12:11
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,c,x,y,tata[100001];
int rad(int x)
{
    while(tata[x]>0)
    {
        x=tata[x];
    }
    return x;
}
int main()
{
    fin>>n>>m;
     for(int i=1;i<=n;i++)
        tata[i]=-1;
    for(int i=1;i<=m;i++)
    {
        fin>>c>>x>>y;
        if(c==1)
        {
            int x1=rad(x);
            int y1=rad(y);
            if(tata[x1]<tata[y1])
            {
                tata[x1]+=tata[y1];
                tata[y1]=x1;
            }
            else
            {
                tata[y1]+=tata[x1];
                tata[x1]=y1;
            }

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

    }

    return 0;
}