Pagini recente » Cod sursa (job #1041462) | Cod sursa (job #202010) | Cod sursa (job #2936089)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int dim=1e5+1;
int n, m, op, x, y, t[dim];
int radacina(int k)
{
int r=k;
while(t[r]!=r)
r=t[r];
while(t[k]!=r)
{
int aux=t[k];
t[k]=r;
k=aux;
}
return r;
}
void unire(int k, int p)
{
int rk=radacina(k), rp=radacina(p);
if(rk!=rp)
t[rp]=rk;
}
void verificare(int k, int p)
{
if(radacina(k)!=radacina(p))
fout<<"NU"<<'\n';
else fout<<"DA"<<'\n';
}
int main()
{
fin>>n>>m;
for(int i=1; i<=n; i++)
t[i]=i;
for(int i=1; i<=m; i++)
{
fin>>op>>x>>y;
if(op==1)
unire(x, y);
else verificare(x, y);
}
fout.close();
return 0;
}