Cod sursa(job #418794)

Utilizator mihaionlyMihai Jiplea mihaionly Data 16 martie 2010 14:04:05
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <cstdio>
using namespace std;
#define nmax 100005
FILE *f=fopen("disjoint.in","r");
FILE *g=fopen("disjoint.out","w");
int n,m;
int T[nmax];
int p(int nod)
 {
 int r;
 for(r=nod;T[r]!=r;r=T[r]);
 while(nod!=T[nod])
  {
  nod=T[nod];
  T[nod]=r;
  }
 return r;
 }
int main()
 {
 fscanf(f,"%d %d",&n,&m);
 int i,x,y,ok;
 for(i=1;i<=n;i++) T[i]=i;
 for(i=1;i<=m;i++)
  {
  fscanf(f,"%d %d %d",&ok,&x,&y);
  if(ok==1)
   T[p(x)]=p(y);
  else if(p(x)==p(y))
   fprintf(g,"DA\n");
  else
   fprintf(g,"NU\n");
  }
 return 0;
 }