Pagini recente » Cod sursa (job #1269491) | Cod sursa (job #893815) | Cod sursa (job #1311376) | Cod sursa (job #3030085) | Cod sursa (job #3261687)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX=1e5;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tata[NMAX+1];
int det_lider(int x)
{
int lider=x;
while(lider!=tata[lider])
lider=tata[lider];
int aux;
while(x!=tata[x])
{
aux=x;
x=tata[x];
tata[aux]=lider;
}
return lider;
}
void update(int x, int y){
int lider_x=det_lider(x);
int lider_y=det_lider(y);
if(lider_x!=lider_y)
tata[lider_y]=lider_x;
}
bool cautare(int x,int y){
int lider_x=det_lider(x);
int lider_y=det_lider(y);
return lider_x==lider_y;
}
int main()
{
int n,m,o,x,y;
fin>>n>>m;
for(int i=1;i<=n;i++)
tata[i]=i;
for(int i=1;i<=m;i++)
{
fin>>o>>x>>y;
if(o==1)
update(x,y);
else
if(cautare(x,y))
fout<<"DA\n";
else
fout<<"NU\n";
}
return 0;
}