Cod sursa(job #2815883)

Utilizator denidragomir2007Dragomir Denisa denidragomir2007 Data 10 decembrie 2021 15:55:37
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb

#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int sef[100001];

int sefm(int x) {
    if (sef[x] == x)
        return x;
    return sef[x] = sefm(sef[x]);
 }
 void unire (int x, int y) {
      int sefx, sefy;
      sefx = sefm(x);
      sefy = sefm(y);
      sef[sefx] = sefy;
 }
 int main()
 {
  int n, k, tip, x, y, i;
  fin>>n>>k;
  for ( i = 1; i <= n; i++)
    sef[i] = i;
  for (i=1;i<=k;i++) {
    fin>>tip>>x>>y;
    if (tip == 1)
        unire(x, y);
     else {
        if (sefm(x) == sefm(y))
            fout<<"DA\n";
        else
            fout<<"NU\n";
    }
  }

 }