Pagini recente » oni_2005_10_1 | Cod sursa (job #1919433) | Cod sursa (job #549484) | Cod sursa (job #2174832) | Cod sursa (job #1605811)
#include <iostream>
#include <vector>
#include <fstream>
#include<stdio.h>
using namespace std;
vector <int> v[100000];
int vec[100000];
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int x, y, n, m, i, j;
int op;
scanf("%d%d",&n,&m);
for(i=1; i<=n; i++)
{ vec[i]=i;
v[i].push_back(i);
}
for(j=1; j<=m; j++)
{
scanf("%d%d%d",&op,&x,&y);
if(op==1) //reuniune
{
if(v[vec[x]].size()>=v[vec[y]].size()){
for(i=v[vec[y]].size()-1; i>=0; i--)
{
int c=vec[y];
vec[v[c][i]]=x;
v[vec[x]].push_back(v[c][i]);
v[c].pop_back();
}
}
else for(i=v[vec[x]].size()-1; i>=0; i--)
{
int c=vec[x];
vec[v[c][i]]=y;
v[vec[y]].push_back(v[c][i]);
v[c].pop_back();
}
}
else{ //da sau nu
if(vec[x]==vec[y])
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}