Cod sursa(job #2553121)

Utilizator ionita786Ionita Daniel ionita786 Data 21 februarie 2020 17:24:44
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m,q,x,y,t[100001];
int rad(int k)
{
    if(t[k] == k) return k;
    t[k] = rad(t[k]);
    return t[k];
}
bool query(int x, int y)
{
    return (rad(x)==rad(y));
}
void reunion(int x,int y)
{
    int rx = rad(x);
    int ry = rad(y);
    t[ry] = t[rx] = rx;
}
int main()
{
   in >> n >> m;
   for(int i = 1; i <= n; ++i)
    t[i] = i;
   while(m--)
   {
      in >> q >> x >> y;
      if(q == 1)
        reunion(x,y);
        else
        {
            if(query(x,y)) out << "DA" << '\n';
            else out << "NU" << '\n';
        }
   }
}