Pagini recente » Borderou de evaluare (job #3361042) | Cod sursa (job #3361055)
#include <fstream>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int v[100001];
int l[100001];
int n,m,cod,x,y;
int gasire(int x)
{
if(x!=v[x])return v[x]=gasire(v[x]);
return v[x];
}
void comb(int x,int y)
{
x=gasire(x);
y=gasire(y);
if(x!=y)
{
if(l[x]<l[y])swap(x,y);
v[y]=x;
if(l[x]==l[y])
{
l[x]++;
}
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
v[i]=i;
}
for(int i=1;i<=m;i++)
{
fin>>cod>>x>>y;
if(cod==1)
{
comb(x,y);
}
else
if(cod==2)
{
if(gasire(x)==gasire(y))
{
fout<<"DA"<<'\n';
}
else
fout<<"NU"<<'\n';
}
}
return 0;
}