Pagini recente » Cod sursa (job #728031) | Cod sursa (job #3138849) | Cod sursa (job #40582) | Cod sursa (job #2137338) | Cod sursa (job #2704797)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m;
int t[100001], rang[100001];
int Radacina(int k)
{
if(t[k] == 0)
return k;
int x = Radacina(t[k]);
t[k] = x;
return x;
}
void Unire(int k, int p)
{
int rk = Radacina(k), rp = Radacina(p);
if(rk != rp)
{
if(rang[rk] < rang[rp])
t[rk] = rp;
else
{
t[rp] = rk;
if(rang[rk] == rang[rp])
rang[rk]++;
}
}
}
int main()
{
int i, x, y, cod;
fin >> n >> m;
for(i = 0; i < m; i++)
{
fin >> cod >> x >> y;
if(cod == 1)
Unire(x, y);
else
{
int rx = Radacina(x), ry = Radacina(y);
if(rx == ry)
fout << "DA";
else
fout << "NU";
fout << "\n";
}
}
return 0;
}