Pagini recente » Cod sursa (job #2631003) | Cod sursa (job #857234) | Cod sursa (job #3152457) | Cod sursa (job #1099162) | Cod sursa (job #361339)
Cod sursa(job #361339)
#include<stdio.h>
#include<vector>
using namespace std;
vector<int> d,va,vb;
int n,m,i,a,b,c;
void read(),solve(),upd();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&m);
}
void solve()
{
for(i=0;i<=n;i++)d.push_back(i);
for(;m;m--)
{
scanf("%d%d%d",&c,&a,&b);
upd();
if(c==2)a==b?printf("DA\n"):printf("NU\n");
else d[a]=b;
}
}
void upd()
{
vector<int>::iterator it;
va.resize(0);vb.resize(0);
for(;d[a]-a;a=d[a])va.push_back(a);va.push_back(a);
for(;d[b]-b;b=d[b])vb.push_back(b);vb.push_back(b);
for(it=va.begin();it!=va.end();it++)d[*it]=a;
for(it=vb.begin();it!=vb.end();it++)d[*it]=b;
}