Cod sursa(job #3271814)

Utilizator theo_aldescuTheodora Aldescu theo_aldescu Data 27 ianuarie 2025 14:18:31
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int r,t[100005],h[100005],r1,r2,x,aux,i,m,y,o,n;
void unif(int r1,int r2)
{if(h[r1]<h[r2])t[r1]=r2;
else t[r2]=r1;
if(h[r1]==h[r2])h[r1]++;
}
int rad(int x)
{r=x;
while (t[r]!=r)
    r=t[r];
while(x!=r)
    {aux=t[x];
    t[x]=r;
    x=aux;
    }
return r;
}
int main()
{f>>n>>m;
for(i=1;i<=n;i++)
    t[i]=i,h[i]=1;
for(i=1;i<=m;i++)
    {f>>o>>x>>y;
    if(o==1)unif(x,y);
    else {if(rad(x)==rad(y))g<<"DA"<<'\n';
        else g<<"NU"<<'\n';
        }
    }

}