Pagini recente » Cod sursa (job #1363107) | Cod sursa (job #2363301) | Cod sursa (job #2135445) | Cod sursa (job #2813093) | Cod sursa (job #2439370)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int i, p[100001], Rank[100001], cod, x, y, n, m, o; // rank este altceva
void Union (int r1, int r2) // Se reunesc multimile cu radacinile r1 si r2.
{
if (Rank[r1] > Rank[r2]) {
p[r2] = r1;
}
else
{
p[r1] = r2;
if (Rank[r1] == Rank[r2])
Rank[r2]++;
}
}
int FindSet (int nod)
{
// while (p[nod] != nod)
// nod = p[nod];
// return p[nod];
if(p[nod]!=nod)
p[nod] = FindSet(p[nod]);
return p[nod];
}
int main ()
{
fin >> m >> o;
for (i = 1; i <= m; i++)
p[i] = i;
while (o--)
{
fin >> cod >> x >> y;
if (cod == 1)
Union(FindSet(x), FindSet(y));
else {
if (FindSet(x) == FindSet(y))
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}