Cod sursa(job #275639)

Utilizator zerobaratalexandra zerobarat Data 10 martie 2009 16:30:40
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<fstream.h>
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
#define max 100007
int t[max],r[max],n,m;

int mul(int x)
{if(t[x]!=x)t[x]=mul(t[x]);
   return t[x];
 }

void uneste(int x,int y)
{
x=mul(x);
y=mul(y);
if(x==y)return;

if(r[x]<r[y])t[x]=y;
   else t[y]=x;

   if(r[x]==r[y])r[y]++;

}

int main()
{int i,cod,x,y;

fin>>n>>m;
for(i=1;i<=n;i++)t[i]=i;
for(i=1;i<=m;i++)
{fin>>cod>>x>>y;
 if(cod==1)uneste(x,y);
  else if(mul(x)==mul(y))fout<<"DA\n";
     else fout<<"NU\n";
 }

 fin.close();
 fout.close();
 return 0;
 }