Cod sursa(job #2050756)

Utilizator alin1999Buzatu Alin alin1999 Data 28 octombrie 2017 11:15:08
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 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]=-1;}
   for(int i=1;i<=m;++i)
   {
       fin>>q>>a>>b;
       pl1=verif(a);
           pl2=verif(b);
   if(q==1)
           tata[c[pl1][0]]=pl2;
   if(q==2)
    {
        if(a!=b)
        {
        if(pl1==pl2)
    fout<<"DA"<<"\n";
   else
    fout<<"NU"<<"\n";}
    else
        fout<<"DA"<<"\n";
   }
   }
    return 0;
}