Cod sursa(job #2926407)

Utilizator Luca529Taschina Luca Luca529 Data 17 octombrie 2022 19:09:31
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int T[100001];

int R(int a)
{if(a==T[a])return a;
 else return T[a]=R(T[a]);
}

void L(int a, int b)
{if(T[a]>T[b])T[a]=T[b];
 else T[b]=T[a];
}

int main()
{   int n,m,a,b,c;
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    T[i]=i;

    for(int i=1;i<=m;i++)
    {fin>>a>>b>>c;
     if(a==1)
     {int a1=R(b), b1=R(c);
      if(a1!=b1)L(b, c);
     }
     else
     {int a1=R(b), b1=R(c);
      if(a1==b1)fout<<"DA\n";
      else fout<<"NU\n";
     }
    }

    return 0;
}