Nu aveti permisiuni pentru a descarca fisierul grader_test19.ok

Cod sursa(job #454976)

Utilizator arnold23Arnold Tempfli arnold23 Data 12 mai 2010 21:21:20
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#define size 100010

using namespace std;

ifstream in("disjoint.in");
ofstream out("disjoint.out");
long n,m,k,x,y,i,t[size],r[size];

int init()
{
  for (int p=1;p<=n;++p){
	t[p]=p;
	r[p]=1;
  }
  return 0;
}

long find(long w)
{
  long u,m;		
  for (u=w;t[u]!=u;u=t[u]);
  
/*  while (t[w]!=w){
    m=t[w];
	t[w]=u;
	w=m;
  }
*/  
  return u;
}

int ins(long e,long a)
{
/*  if (r[e]>r[a]) t[a]=e; else
	  t[e]=a;
  if (r[e]==r[a]) ++r[a];*/

  	t[a]=e;
	
  return 0;
}

int main()
{
  in >> n >> m;
  
  init();
  
  for (i=1;i<=m;++i){
    in >> k >> x >> y;
	if (k==1) ins(x,y); else
	if (k==2)
		if (find(x)==find(y)) out << "DA\n"; else
		out << "NU\n";		
  }
  
  in.close();
  out.close();

  return 0;
}