Cod sursa(job #405025)

Utilizator MESAROSLaura Mesaros MESAROS Data 27 februarie 2010 11:47:58
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<stdio.h>
#include<vector>

using namespace std;

  int v[100001],card[100001],n;

void modifica(int x,int y)

{     int  i,multimea1,multimea2,cardnou;
 multimea1=v[x];
 multimea2=v[y];
 cardnou=card[x]+card[y];
 if(card[x]<card[y]);

                     
      for(i=1;i<=n;i++)
      if(v[i]==multimea1)
      {v[i]=multimea2;
      card[i]=cardnou;}

else
  for(i=1;i<=n;i++)
  if(v[i]==multimea2)
 { v[i]=multimea1;
 card[i]=cardnou;}
  
  card[x]=card[y]=cardnou;
  
}




int main()
{   int i,m,x,y,op;

freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);

 scanf("%d%d",&n,&m);
 
 for(i=1;i<=n;i++)
 {
v[i]=i;
card[i]=1;

}

for(i=1;i<=m;i++)
{
                 scanf("%d%d%d",&op,&x,&y);
       if(op==1)
       modifica(x,y);
       else
    {  if(v[x]==v[y])
    printf("DA\n");
    else
    printf("NU\n");
}
}
return 0;
}