Pagini recente » Cod sursa (job #273186) | Cod sursa (job #3247300) | Cod sursa (job #2208026) | Cod sursa (job #717133) | Cod sursa (job #2867865)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int linkU[100002];
int sizeU[100002];
int n, m, a, b, c;
int findU(int x) {
while (x != linkU[x]) x = linkU[x];
return x;
}
bool sameU(int a, int b) {
return findU(a) == findU(b);
}
void uniteU(int a, int b) {
a = findU(a);
b = findU(b);
if (sizeU[a] < sizeU[b]) swap(a, b);
sizeU[a] += sizeU[b];
linkU[b] = a;
}
int main()
{
fin>>n>>m;
for (int i=1; i<=n; i++) {
linkU[i] = i;
sizeU[i] = 1;
}
for (int i=1; i<=m; i++) {
fin>>c>>a>>b;
if (c == 1) {
uniteU(a, b);
}
else if (c == 2) {
if (sameU(a, b)) fout<<"DA\n";
else fout<<"NU\n";
}
}
return 0;
}