Cod sursa(job #2050705)

Utilizator alin1999Buzatu Alin alin1999 Data 28 octombrie 2017 11:06:01
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,q,a,b,tata[100005],pl1,pl2,i,j;
bool ok;
int verif(int x)
{
    while(tata[x]!=x)
        x=tata[x];
    return x;
}
vector<int>c[100005];
int main()
{
   fin>>n>>m;
   for(int i=1;i<=n;++i)
    {c[i].push_back(i);tata[i]=i;}
   for(int i=1;i<=m;++i)
   {
       fin>>q>>a>>b;
   if(q==1)
   {
           pl1=verif(a);
           pl2=verif(b);
           tata[c[pl1][0]]=pl2;
   }
   if(q==2)
    {
        if(a!=b)
        {pl1=tata[a];
        pl2=tata[b];
        if(pl1==pl2)
    fout<<"DA"<<"\n";
   else
    fout<<"NU"<<"\n";}
    else
        fout<<"DA"<<"\n";
   }
   }
    return 0;
}