Cod sursa(job #1496257)

Utilizator refugiatBoni Daniel Stefan refugiat Data 4 octombrie 2015 17:38:16
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb

#include<fstream>
#define elemax 100002
using namespace std;
int rad[elemax];
bool query(int a,int b)
{
  int t1,t2;
  t1=rad[a];
  while(t1!=rad[t1])
    t1=rad[t1];
  t2=rad[b];
  while(t2!=rad[t2])
    t2=rad[t2];
  return (t1==t2);
}
int main()
{
  ifstream si;
  si.open("disjoint.in");
  ofstream so;
  so.open("disjoint.out");
  int n,m;
  si>>n>>m;
  int a,b,c,i;
  for(i=1;i<=n;++i)
  {
      rad[i]=i;
  }
  for(i=0;i<m;++i)
  {
    si>>a>>b>>c;

    if(a==1)
      rad[c]=rad[b];
    else
    {
      if(query(b,c))
       so<<"DA"<<'\n';
      else
       so<<"NU"<<'\n';
    }
  }
  si.close();
  so.close();
  return 0;
}