Pagini recente » Cod sursa (job #2369901) | Cod sursa (job #3130048) | Cod sursa (job #2489503) | Cod sursa (job #62230) | Cod sursa (job #2427433)
#include <bits/stdc++.h>
using namespace std;
int n, m, i, j, care[100005], lungime[100005], tip, x, y, m1, m2;
vector <int> v[100005];
void unite(int m1, int m2)
{
///pun in m1 multimea m2
int sz=v[m2].size();
for(int i=sz-1;i>=0;i--)
{
care[v[m2][i]]=m1;
v[m1].push_back(v[m2][i]);
v[m2].erase(v[m2].begin()+i);
lungime[m1]++;
lungime[m2]--;
}
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
lungime[i]=1;
care[i]=i;
v[i].push_back(i);
}
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&tip,&x,&y);
if(tip==1)
{
m1=care[x],m2=care[y];
if(lungime[m1]>lungime[m2])
unite(m1,m2);
else unite(m2,m1);
continue;
}
if(care[x]==care[y])
printf("DA\n");
else printf("NU\n");
}
return 0;
}