Pagini recente » Cod sursa (job #3127807) | Cod sursa (job #1091555) | Cod sursa (job #2773782) | Cod sursa (job #1510611) | Cod sursa (job #2935687)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
vector <int> p;
int n, m, cod;
//O(m * logn)
int Find(const int& a)
{
if (p[a] == 0)
return a;
p[a] = Find(p[a]);
return p[a];
}
void Union(const int& a, const int& b)
{
int tx = Find(a);
int ty = Find(b);
if (tx != ty) {
if (cod == 1)
p[tx] = ty;
else fout << "NU\n";
}
else if (cod == 2)
fout << "DA\n";
}
int main()
{
int a, b;
fin >> n >> m;
p.resize(n + 1);
for (int i = 1; i <= n; i++)
p[i] = 0;
for (int i = 0; i < m; i++){
fin >> cod >> a >> b;
Union(a, b);
}
return 0;
}