Pagini recente » Cod sursa (job #1629562) | Cod sursa (job #1171966) | Cod sursa (job #1390792) | Cod sursa (job #2134651) | Cod sursa (job #2381261)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int i, p[100001], Rank[100001], cod, x, y, n, m, o;
void Union (int r1, int 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 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;
}
/*
p : 2 4
1 2 3 4
r : 0 1 0 2
1 2 3 4
*/