Cod sursa(job #2161474)

Utilizator CodrinsahCotarlan Codrin Codrinsah Data 11 martie 2018 18:56:51
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream fi ("disjoint.in");
ofstream fo ("disjoint.out");
int i,comp[100006],lg[100006],n,nr_op,op,n1,n2,tip;
int reprez(int nod)
{
    if (comp[nod]==nod) return nod;
    else return comp[nod]=reprez(comp[nod]);
}
void unire (int nod1,int nod2)
{
  nod1=reprez(nod1);
  nod2=reprez(nod2);
  comp[nod1]=nod2;
}
int main()
{
    fi>>n>>nr_op;
    for (i=1;i<=n;i++)
    {
      comp[i]=i;
      lg[i]=1;
    }
    for (op=1;op<=nr_op;op++)
    {
      fi>>tip>>n1>>n2;
      if (n1>n2) swap (n1,n2);
      if (tip==1) unire (reprez(n1),reprez(n2));
      if (tip==2)
      {
        if (reprez(n1)==reprez(n2)) fo<<"DA"<<'\n';
        else fo<<"NU"<<'\n';
      }
    }
    return 0;
}