Cod sursa(job #662269)

Utilizator fenrigasdFc dd2 fenrig Data 16 ianuarie 2012 12:22:36
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

using namespace std;
const int N=100005;
int n,m,x,y,cod,v[N],h[N];

int rad(int a)
{
    while(v[a]!=0)
     a=v[a];

    return a;
}
void compresie(int a , int r)
{ int p;
    while(a!=r)
     {   p=v[a];
         v[a]=r;
         a=p;
     }
}

void first()
{
    //if(h[x]>h[y])
     v[rad(y)]=rad(x);
     //else
     // v[rad(x)]=rad(y);
      compresie(x,rad(x));
      compresie(y,rad(y));
}
int second()
{
    if(rad(x)==rad(y))
      return 1;
    return 0;
}
int main()
{
    fstream f("disjoint.in",ios::in);
    fstream g("disjoint.out",ios::out);
    f>>n>>m;
    for(int i=1;i<=m;i++)
     {
         f>>cod>>x>>y;
         if(cod==1)
           first();
         else
           {if(second()==1) g<<"DA\n";
              else
                 g<<"NU\n";
          }
     }

    return 0;
}