Pagini recente » Cod sursa (job #2357606) | Cod sursa (job #1114465) | Cod sursa (job #357184) | Cod sursa (job #1082954) | Cod sursa (job #2136245)
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int t[100001], rg[100001];
int find(int node)
{
int R = node, temp;
while (t[R] != 0)
{
R = t[R];
}
while (t[node])
{
temp = t[node];
t[node] = R;
node = temp;
}
return R;
}
void unite(int x,int y)
{
if (rg[x] > rg[y]) t[y] = x;
else t[x] = y;
if (rg[x] == rg[y]) rg[y]++;
}
int main()
{
int n, m, cod, x, y;
in >> n >> m;
for (int i = 1; i <= n; i++) rg[i] = 1;
while (m)
{
in >> cod >> x >> y;
if (cod == 2)
{
if (find(x) == find(y)) out << "DA\n";
else out << "NU\n";
}
else
{
unite(find(x), find(y));
}
m--;
}
return 0;
}