Pagini recente » Cod sursa (job #2881518) | Cod sursa (job #869123) | Cod sursa (job #770113) | Cod sursa (job #998848) | Cod sursa (job #1668825)
#include <fstream>
using namespace std;
int t[200010];
int n, m, i, ra, rb, a, b, tip;
int rad(int a) {
int b = a, aux;
while (t[a] > 0)
a = t[a];
while (b!=a) {
aux = t[b];
t[b] = a;
b = aux;
}
return a;
}
int main () {
ifstream fin ("disjoint.in");
ofstream fout("disjoint.out");
fin>>n>>m;
for (i=1;i<=n;i++)
t[i] = -1;
for (;m--;) {
fin>>tip>>a>>b;
ra = rad(a);
rb = rad(b);
if (tip == 1) {
//uneste
if (ra != rb) {
if (t[ra] < t[rb]) {
t[ra] += t[rb];
t[rb] = ra;
} else {
t[rb] += t[ra];
t[ra] = rb;
}
}
} else {
// verifica
fout<<((ra == rb) ? "DA\n" : "NU\n");
}
}
return 0;
}