Pagini recente » Cod sursa (job #253181) | Cod sursa (job #1866114) | Cod sursa (job #3243857) | Cod sursa (job #2426896) | Cod sursa (job #3154096)
#include <bits/stdc++.h>
using namespace std;
struct DSU
{
int m;
vector<int> parent,sizes;
void init(int n, int a[])
{
parent.resize(n+1);
sizes.resize(n+1);
m=n;
for(int i=1;i<=n;i++)
{
parent[i]=i;
sizes[i]=1;
}
}
int find(int n)
{
if(n==parent[n])
return n;
return parent[n]=find(parent[n]);
}
void unite(int x, int y)
{
x=find(x);
y=find(y);
if(x==y)
return;
if(sizes[y]>sizes[x])
swap(x, y);
parent[y]=x;
sizes[x]+=sizes[y];
}
};
int main()
{
DSU morbius;
int n,m,x,y,cer;
cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>cer>>x>>y;
if(cer==1)
morbius.unite(x, y);
else if(cer==2)
{
if(morbius.parent[x]==morbius.parent[y])
cout<<"DA"<<'\n';
else
cout<<"NU"<<'\n';
}
}
return 0;
}