Pagini recente » Cod sursa (job #2756398) | Cod sursa (job #2034031) | Cod sursa (job #2560311) | Cod sursa (job #1264266) | Cod sursa (job #2697808)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX = 100000;
int v[NMAX + 5], siz[NMAX + 5];
void Find(int x)
{
if(v[x] == x)
return ;
Find(v[x]);
siz[x] = siz[v[x]];
v[x] = v[v[x]];
}
bool CommonParent(int x, int y)
{
if(v[x] == v[y])
return 1;
return 0;
}
int main()
{
int n, m;
fin >> n >> m;
for(int i = 1; i <= n; i++)
{
v[i] = i;
siz[i] = 1;
}
for(int i = 0; i < m; i++)
{
int t, x, y;
fin >> t >> x >> y;
if(t == 1)
{
if(siz[x] > siz[y])
{
Find(x);
siz[v[x]] += siz[v[y]];
v[y] = v[x];
Find(y);
}
else
{
Find(y);
siz[v[y]] +=siz[v[x]];
v[x] = v[y];
Find(x);
}
}
else
{
Find(x);
Find(y);
if(CommonParent(x, y))
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}