Cod sursa(job #2772215)

Utilizator Cristi_PraliaPralia Alexandru Cristian Cristi_Pralia Data 31 august 2021 12:41:32
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
using namespace std;
#define MAXN 100001
int dad[MAXN];

int find_daddy(int x){
  if(x==dad[x])
    return x;
  return dad[x]=find_daddy(dad[x]);
}
inline void join(int x, int y){
  int rx, ry;
  rx=find_daddy(x);
  ry=find_daddy(y);
  dad[ry]=rx;
}

ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int main(){
  int n, i, tip, x, y, m, a, b;
  cin>>n>>m;
  for(i=1; i<=n; i++)
    dad[i]=i;
  for(i=1; i<=m; i++){
    cin>>tip>>x>>y;
    if(tip==1)
      join(x, y);
    else{
      a=find_daddy(x);
      b=find_daddy(y);
      if(a==b)
        cout<<"DA\n";
      else
        cout<<"NU\n";
    }
  }
  return 0;
}