Cod sursa(job #2837425)

Utilizator AlexDontuAlex Dontu AlexDontu Data 22 ianuarie 2022 10:33:40
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n,m,h[100001],t[100001],i,o,x,y,r1,r2,a;
int main()
{
    fin>>n>>m;
    for (i=1; i<=n; i++)
    {
        t[i]=i;
        h[i]=1;
    }
    for (i=1; i<=m; i++)
    {
        fin>>o>>x>>y;
        r1=x;
        r2=y;
        while (r1!=t[r1]) r1=t[r1];
        while (r2!=t[r2]) r2=t[r2];
        if (o==1)
        {
           if (h[r1]>h[r2]) t[r2]=r1;
           else
           {
               t[r1]=r2;
               if (h[r1]==h[r2]) h[r2]++;
           }

        }
        else
        {
            if (r2==r1) fout<<"DA"<<'\n';
            else fout<<"NU"<<'\n';
        }
        while (x!=r1)
        {
            a=t[x];
            t[x]=r1;
            x=a;
        }
        while (y!=r2)
        {
            a=t[y];
            t[y]=r2;
            y=a;
        }
    }
    return 0;
}