Pagini recente » Cod sursa (job #1096342) | Cod sursa (job #2420958) | Cod sursa (job #645635) | Borderou de evaluare (job #1569253) | Cod sursa (job #2292841)
#include <iostream>
#include <fstream>
using namespace std;
const int N = 100005;
int t[N], h[N];
void subp_rec(int a, int b)
{
if (h[b] == 1)
{
t[b] = t[a];
h[b] += h[a];
return;
}
subp_rec(a,t[b]);
}
int main()
{
int n, m, tip, v1, v2, i;
ifstream in ("disjoint.in");
ofstream out ("disjoint.out");
in >> n >> m;
for ( i = 1; i <= n; i++){
t[i] = i;
h[i] = 1;
}
for ( i=1; i<=m; i++)
{
in >> tip >> v1 >> v2;
if (tip == 1)
subp_rec(v1,v2);
else
{
while (h[v1] != 1)
v1 = t[v1];
while (h[v2] != 1)
v2 = t[v2];
if (v1 == v2)
out << "DA";
else
out <<"NU";
out << '\n';
}
}
in.close();
out.close();
return 0;
}