Cod sursa(job #2031229)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 2 octombrie 2017 21:14:30
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int r[100005],t[100005],n,i,j,m,op;
int FindBigDaddy(int x)
         {while(t[x])x=t[x];
          return x;
         }
void UniteTheDaddies(int x,int y)
          {if(r[x]<r[y]){t[x]=y;}
             else if(r[x]==r[y]){t[x]=y;r[y]++;}
              else t[y]=x;
          }
int main()
{int x,y;
 fin>>n>>m;
 for(i=1;i<=m;i++)
    {fin>>op>>x>>y;
     if(op==1)UniteTheDaddies(FindBigDaddy(x),FindBigDaddy(y));
     if(op==2&&FindBigDaddy(x)==FindBigDaddy(y))fout<<"DA\n";
       else if(op==2)fout<<"NU\n";
    }
}