Pagini recente » Cod sursa (job #1084968) | Cod sursa (job #686607) | Cod sursa (job #926110) | Cod sursa (job #1926693) | Cod sursa (job #424939)
Cod sursa(job #424939)
#include<cstdio>
#include<iostream>
#include<fstream>
#include<vector>
#include<set>
#include<algorithm>
#include<cmath>
#define maxn 100004
#define maxm 100004
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define INFI 2147483640
#define t tata
using namespace std;
int n, h[maxn], tata[maxn];
int radacina(int x)
{
int y=x, tmp;
while(t[x])
x=t[x];
while(t[y])
tmp=t[y], t[y]=x, y=tmp;
return x;
}
int verifica(int x, int y){
return radacina(x)==radacina(y);
}
void uneste(int x, int y)
{
int rx=radacina(x), ry=radacina(y);
if(h[rx]>h[ry])
t[ry]=rx;
else if(h[ry]>h[rx])
t[rx]=ry;
else
t[rx]=ry, h[ry]++;
}
int main()
{
int i, m, op, j;
freopen("disjoint.out","w",stdout);
ifstream fin("disjoint.in");
fin>>n>>m;
while(m--)
{
fin>>op>>i>>j;
if(op==1)
uneste(i,j);
else
if(verifica(i,j)==1)
printf("DA\n");
else
printf("NU\n");
}
return 0;
}