Cod sursa(job #3337503)

Utilizator matei425352Ionescu Matei Cristian matei425352 Data 28 ianuarie 2026 10:41:44
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("disjoint.in");
ofstream o("disjoint.out");

int n,m;
int owner[100001];

int findsef(int x){
  if(owner[x]!=x){
    owner[x]=findsef(owner[x]);
    return owner[x];
  }
  else
    return x;
}

void unire(int x,int y){
  int xsef=findsef(x);
  int ysef=findsef(y);
  owner[ysef]=xsef;
}

void afis(int x, int y){
  if(findsef(x)==findsef(y))
    o<<"DA\n";
  else
    o<<"NU\n";
}

int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
      owner[i]=i;
    for(int i=1;i<=m;i++){
      int cod, x, y;
      f>>cod>>x>>y;
      if(cod==1){
        unire(x,y);
      }
      else
        afis(x,y);
    }
    return 0;
}