Cod sursa(job #2759536)

Utilizator alex1033Alex Putineanu alex1033 Data 18 iunie 2021 22:21:27
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>
using namespace std;

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

const int nmax=1e5+3;
int n,m,task,t[nmax];

struct{
int x,y;
}M[nmax];

int radacina(int k)
{
 if(t[k]==0) return k;
 return radacina(t[k]);
}

void unite(int x,int y)
{
  int rx=radacina(x);
  int ry=radacina(y);
  if(rx!=ry)
    t[rx]=ry;
}

void schr(int x,int y)
{
   if(radacina(x)==radacina(y))
        out<<"DA"<<'\n';
   else out<<"NU"<<'\n';
}


int main(){
int x1,y1;
in>>n>>m;
for(int i=1;i<=m;i++)
{
in>>task>>x1>>y1;
M[i].x=x1;
M[i].y=y1;
if(task==1) unite(x1,y1);
else if(task==2) schr(x1,y1);
}

return 0;
}