Pagini recente » Cod sursa (job #2155725) | Cod sursa (job #1445745) | Cod sursa (job #2223289) | Cod sursa (job #2533564) | Cod sursa (job #3174557)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int NMAX=100001;
int n,m,x,y,cer,cx,cy;
int t[NMAX],rang[NMAX];
int Find(int i)
{
if(t[i]==i)
return i;
return t[i]=Find(t[i]);
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
{
rang[i]=1;
t[i]=i;
}
while(m--)
{
f>>cer>>x>>y;
cx=Find(x);
cy=Find(y);
if(cer==1)
{
if(rang[cx]>rang[cy])
t[cy]=cx;
else if(rang[cy]>rang[cx])
t[cx]=cy;
else if(rang[cx]==rang[cy])
{
rang[cx]++;
t[cy]=cx;
}
}
else
{
if(cx==cy)
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
}
return 0;
}